如何使用Python查找目录中是不是有任何txt文件
Posted
技术标签:
【中文标题】如何使用Python查找目录中是不是有任何txt文件【英文标题】:how can I find whether there is any txt file in a directory or not with Python如何使用Python查找目录中是否有任何txt文件 【发布时间】:2014-04-02 13:25:09 【问题描述】:我想使用python查找特定目录中是否存在任何文件。
类似的东西;
if os.path.exists('*.txt'):
# true --> do something
else:
# false --> do something
【问题讨论】:
你的意思是“任何文件”还是“任何 txt 文件”? 对不起,我忘了提。我的意思是任何文本文件。 【参考方案1】:您可以将glob.glob
与通配符一起使用并检查它是否返回任何内容。例如:
import glob
if glob.glob('*.txt'):
# file(s) exist -> do something
else:
# no files found
请注意,glob.glob
返回与通配符匹配的文件列表(或空列表)。
【讨论】:
实际上,AshwiniChaudhary 的解决方案效率更高(不会生成未使用的列表)。【参考方案2】:您可以将glob.iglob
与next
一起使用:
import glob
if next(glob.iglob('*.txt'), False):
#do something
else:
#do something else
这里如果glog.iglob
返回一个空迭代器,那么将使用默认值False
。
或者像 cmets 中的 @user2357112 建议的那样,我们可以简单地使用 any
,因为它返回 False
以获得空的可迭代对象。:
if any(glob.iglob('*.txt')):
#do something
else:
#do something else
【讨论】:
为什么不只是any
迭代器?【参考方案3】:
os.listdir() 将获取目录中的所有内容 - 文件和目录
import os
if not os.listdir(dir):
#do something
else:
#do something
【讨论】:
【参考方案4】:对于那些从 google 到这里的人,您可以使用另一种解决方案来检查 glob 是否为空。
前面的答案本身就足够了,但是您也可以使用 len() 确定 glob 返回的文件数量,并将其用作比较。
if(len(glob.glob('*.txt')) == 0):
#Glob has no files
else:
#Continue
这将让您确认 glob 是否有文件。如果需要,这还可以让您确认 glob 的文件数量多于或少于特定数量。
【讨论】:
这似乎是多余的——尽管我必须承认,如果你对 glob 的作用一无所知,这将更容易阅读。我很想知道是否存在时差。以上是关于如何使用Python查找目录中是不是有任何txt文件的主要内容,如果未能解决你的问题,请参考以下文章