Python:检查目录列表中是否存在文件

时间:2015-02-26 22:02:10

标签: python

我有一个目录列表和一个文件名。我想检查这个文件名是否存在于任何目录中,如果它存在则代码通过,如果没有,那么我们就会出错。我在下一步遇到了一些麻烦,这就是我所拥有的。

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'

有人可以建议如何解决这个问题吗?

4 个答案:

答案 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