我有一个目录列表和一个文件名。我想检查这个文件名是否存在于任何目录中,如果它存在则代码通过,如果没有,那么我们就会出错。我在下一步遇到了一些麻烦,这就是我所拥有的。
for value in d.values():
for path in value:
if exists(path + '/' + filename):
print 'True'
else:
print 'False'
这是我的测试输出列表:
False
False
False
False
False
False
False
False
False
False
False
False
False
False
True
True
True
True
正如你所看到的那样失败很多,但是这里有一些传递的情况,一次传递的事实对我来说已经足够了,但是我不确定如何将它转换成适当的python逻辑。 / p>
基本上我想做的是
if file exists in any list_of_paths:
print 'True'
else:
print 'False'
有人可以建议如何解决这个问题吗?
答案 0 :(得分:4)
import os
print(any(os.path.exists(os.path.join(dirpath, filename))
for directories in d.values()
for dirpath in directories))
答案 1 :(得分:2)
一个非常简单的解决方案是将此代码包装在一个函数中,该函数在找到文件所在的路径后立即返回True
。
答案 2 :(得分:2)
只需用os.path.exists(path)替换你调用的位置,你的代码就可以了。
答案 3 :(得分:0)
如果您已经在列表中包含了文件夹名称,并且想过滤其中包含特定文件名的文件夹,则可以使用列表理解:
import os
listOfFolders = [*contains the folderpaths*]
validFolders = [folder for folder in listOfFolders if 'badFile.txt' not in os.listdir(folder)]
这将返回其中没有badFile.txt
的文件夹的列表。或者,如果您想要其中包含not
的文件夹,则可以省略badFile.txt
。