如何使用glob.glob模块搜索子文件夹?[副本]

这个问题在这里已经有答案了
如何使用glob()递归查找文件?

(28个答案)

五个月前关闭的

我想打开文件夹中的一系列子文件夹,找到一些文本文件,并打印一些文本文件行。我用的是:

configfiles=glob.glob('C:/Users/sam/Desktop/file1/*.txt'))

但这也无法访问子文件夹。有人知道我如何使用相同的命令访问子文件夹吗

在Python 3.5及更新版本中,使用新的递归功能:

configfiles=glob.glob('C:/Users/sam/Desktop/file1/***.txt',recursive=True)

当设置了recursive时,**后跟路径分隔符匹配0个或多个子目录

在早期的Python版本中,glob.glob()不能递归地列出子目录中的文件

在这种情况下,我将使用os.walk()fnmatch.filter()组合使用:

导入操作系统
导入fnmatch
路径=’C:/Users/sam/Desktop/file1′
configfiles=[os.path.join(dirpath,f)
对于dirpath、dirnames和os.walk(path)中的文件
对于fnmatch.filter中的f(文件’*.txt’)]

这将递归遍历目录,并将所有绝对路径名返回到匹配的.txt文件。在这种特定的情况下,fnmatch.filter()可能过度,您也可以使用.endswith()测试:

导入操作系统
路径=’C:/Users/sam/Desktop/file1′
configfiles=[os.path.join(dirpath,f)
对于dirpath、dirnames和os.walk(path)中的文件
如果f.endswith(’.txt’),则表示文件中的f

发表评论