python - 如何使用 glob.glob 模块搜索子文件夹?

标签 python filesystems glob fnmatch

我想打开一个文件夹中的一系列子文件夹并找到一些文本文件并打印一些文本文件的行。我正在使用这个:

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/

相关文章:

python - 将值附加到 TTK 组合框 ['values' ] 而不重新加载组合框

python - 批量搜索并用python替换文件名中的字符串

linux - 如何从 Linux 上的单个目录中删除十亿个文件?

arrays - 为什么 gulp.src 不喜欢将完整路径数组传递给文件?

node.js - 为什么我的 npm 脚本中的 glob 不起作用?

python - Django Celery 持久撤销

python - 在 python 中学习类(class),但遇到的问题可能很简单

创建文件系统,需要 C 的建议

c - 如何获取位于我创建的虚拟文件系统内的文件使用的 block ?

php - 使用 glob 动态显示不同扩展名的图像在 PHP 中不起作用