Directory.GetFiles("path/to/dir", "*.*", SearchOption.AllDirectories) 但在 Python

Posted

技术标签:

【中文标题】Directory.GetFiles("path/to/dir", "*.*", SearchOption.AllDirectories) 但在 Python [重复]【英文标题】:Directory.GetFiles("path/to/dir", "*.*", SearchOption.AllDirectories) but in Python [duplicate] 【发布时间】:2021-12-04 06:24:57 【问题描述】:

C#中有Directory.GetFiles("path/to/dir", "*.*", SearchOption.AllDirectories),但是是否有相同或相似的功能来搜索所有目录中的文件?

【问题讨论】:

【参考方案1】:

你可以使用os.walk('path/to/dir')

来自documentation-

通过遍历树在目录树中生成文件名 自上而下或自下而上。对于根目录在树中的每个目录 目录顶部(包括顶部本身),它产生一个三元组(目录路径, 目录名,文件名)。

dirpath 是一个字符串,目录的路径。 dirnames 是一个列表 dirpath 中子目录的名称(不包括“.”和“..”)。 filenames 是非目录文件的名称列表 目录路径。请注意,列表中的名称不包含路径组件。 获取文件或目录的完整路径(以顶部开头) dirpath, do os.path.join(dirpath, name).

对于匹配的文件名,您可以使用fnmatch

【讨论】:

【参考方案2】:

C#中有xxx,有没有类似的功能可以在Python中搜索所有目录下的文件?

看看glob.globrecursive=True,示例用法假设你是这样的结构

dir1
 dir2
  dir3
   file.txt

然后

import glob
for filename in glob.glob("**/*.txt",recursive=True):
    print(filename)

输出

dir1/dir2/dir3/file.txt

【讨论】:

以上是关于Directory.GetFiles("path/to/dir", "*.*", SearchOption.AllDirectories) 但在 Python 的主要内容,如果未能解决你的问题,请参考以下文章

Directory.GetFiles 返回重复的文件名

Directory.GetFiles:如何只获取文件名,而不是完整路径? [复制]

c#如何获取某目录下的几种格式的图片文件。Directory.GetFiles

Directory.EnumerateFiles 与 Directory.GetFiles 有啥区别?

Directory.GetFiles 有效,Directory.GetDirectories 不在同一目录中

您可以使用多个过滤器调用 Directory.GetFiles() 吗?