这个问题在这里已经有答案了:
如何使用glob()递归查找文件?
(28个答案)
(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