检查目录是否存在,以便for循环继续运行



我想知道如何检查我的路径是否存在于全局for循环中。我想在我的for looop中嵌入一个if语句,但我意识到这行不通。循环之前我需要检查一下。但这没有意义,因为如果"if语句"在for循环之前,我如何让它在路径中循环?

for path in glob.glob("/Users/Downloads/FATES/*network5_01"):                                                                                                                                              
if not os.path.exists(path):
raise Exception("No results found from glob expression", path)

不幸的是,这不起作用。

我在这里找到了类似的问题,但没有太大帮助。

我想要for循环(如果目录不存在),让它继续,但引发一个关于哪个目录不存在的异常。

您提供的代码将获得与给定glob匹配的路径列表,然后立即对该列表进行迭代,如果其中任何路径在迭代过程中消失,则抛出异常。

只有在扩展glob和检查路径是否存在之间删除文件时,才会引发此异常。

如果我错了,请告诉我,但我认为你要做的是在程序开始时获得一个存在的文件列表,然后在其中任何文件消失时引发异常。你可以这样做:

import time                                                                                                                                                                                             
# Get the list at program start.
original_list = glob.glob("/Users/kjoyner/src/*") 
while True: 
time.sleep(1) # Do work here.
new_list = glob.glob("/Users/kjoyner/src/*") 
for file in original_list: 
if file not in new_list: 
raise Exception("Missing file: {0}".format(file)) 

当我在另一个窗口中删除该目录中的文件时,我会看到:

Exception: Missing file: /Users/kjoyner/src/sacrificial

请注意,如果有人在程序启动后添加文件,然后将其删除,则此代码不会捕获到该文件,因为该文件不在original_list中。如果你想捕捉到这一点,那么你会想使用集合而不是列表,并在每个循环上更新original_list(你想重命名它),使其成为original_listnew_list的并集。

还要注意,这不是递归的。如果有人删除了您所在目录的子目录,则不会引发异常,因为它也不在original_list中。

相关内容

  • 没有找到相关文章

最新更新