如何使用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.iglobnext 一起使用:

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文件的主要内容,如果未能解决你的问题,请参考以下文章

查找目录中的文件数

在 Python 中查找扩展名为 .txt 的目录中的所有文件

python查找文本文档中特定间隔位置的字符并替换

python操作文本文件

如何使用python在每个域和子域中查找站点地图

如何在计算机中快速新建TXT文本文档