Python 检查目录列表中是否存在文件
我有一个目录列表和一个文件名。我想检查此文件名是否存在于任何目录中,如果确实存在,则代码通过,如果不存在,则我们将出错。不过,我在下一步中遇到了一些麻烦,以下是我的情况Python 检查目录列表中是否存在文件,python,Python,我有一个目录列表和一个文件名。我想检查此文件名是否存在于任何目录中,如果确实存在,则代码通过,如果不存在,则我们将出错。不过,我在下一步中遇到了一些麻烦,以下是我的情况 for value in d.values(): for path in value: if exists(path + '/' + filename): print 'True' else: print 'False' 以下是我的测试输出
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
正如您所看到的,这失败了很多,但是这里有一些传递案例,事实上,is传递一次对我来说已经足够好了,但是我不确定如何将其转换为正确的python逻辑
基本上我想做的是
if file exists in any list_of_paths:
print 'True'
else:
print 'False'
有人能建议如何处理这个问题吗?一个非常简单的解决方案是将此代码包装在一个函数中,该函数在找到文件所在的路径后立即返回
True
一个非常简单的解决方案是将此代码包装在一个函数中,该函数在找到文件所在的路径后立即返回True
只需将调用exists的地方替换为os.path.exists(路径),您的代码应该可以正常工作。只需将调用exists的地方替换为os.path.exists(路径),您的代码应该可以正常工作。如果列表中已经有文件夹名称,并且希望筛选其中包含特定文件名的文件夹,因此,您可以使用列表:
import os
print(any(os.path.exists(os.path.join(dirpath, filename))
for directories in d.values()
for dirpath in directories))
import os
listOfFolders = [*contains the folderpaths*]
validFolders = [folder for folder in listOfFolders if 'badFile.txt' not in os.listdir(folder)]
这将返回其中没有
badFile.txt
的文件夹列表。或者,如果您希望文件夹中包含badFile.txt
,则可以省略not
。如果列表中已经包含文件夹名称,并且希望筛选其中包含特定文件名的文件夹,则可以使用列表理解:
import os
listOfFolders = [*contains the folderpaths*]
validFolders = [folder for folder in listOfFolders if 'badFile.txt' not in os.listdir(folder)]
这将返回其中没有
badFile.txt
的文件夹列表。或者,如果您希望文件夹中包含badFile.txt
,您可以省略not
。如果我理解正确,那么您可以在第一次匹配后中断for循环,因此在print True
下面放一行break
。对于中断
和继续
。如果我误读了这个问题,很抱歉。如果我理解正确,那么您可以在第一次匹配后中断for循环,因此在print True
下面放置一行break
。对于中断
和继续
。如果我误读了这个问题,很抱歉。非常实用,但它也非常简单地表示为any
加上生成器表达式,我更喜欢。是的,但这需要使用比简单函数更复杂的Python概念。我同意,并且我经常尝试在回答中走这条路线,但这些都是基本的python构建块,我在这一块的另一面进行了介绍。非常实用,但它也非常简单地表示为any
加上生成器表达式,我更喜欢。是的,但这需要使用比简单函数更复杂的python概念。我同意,我经常尝试在我的答案中走这条线,但这些都是基本的python构建块,我在这一条的另一边。