我想打开一个文件夹中的一系列子文件夹并找到一些文本文件并打印一些文本文件的行。我正在使用这个:
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()
而是:
import os
import fnmatch
path = 'C:/Users/sam/Desktop/file1'
configfiles = [os.path.join(dirpath, f)
for dirpath, dirnames, files in os.walk(path)
for f in fnmatch.filter(files, '*.txt')]
这将递归遍历您的目录并将所有绝对路径名返回到匹配的 .txt
文件。在这种 特定 的情况下,fnmatch.filter()
可能是矫枉过正,您也可以使用 .endswith()
测试:
import os
path = 'C:/Users/sam/Desktop/file1'
configfiles = [os.path.join(dirpath, f)
for dirpath, dirnames, files in os.walk(path)
for f in files if f.endswith('.txt')]
关于python - 如何使用 glob.glob 模块搜索子文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14798220/