python-3.x - 如何评估路径中的双星号(星号)?

标签 python-3.x path wildcard

路径中的任何双星号都表示所有 sub-directories .

现在,如果我有这样的路径 a/b/c/**/*.txt 这意味着我需要 c 下所有子目录下的所有文件。如何在 python 中得到它?

最佳答案

让我们考虑一个例子。 考虑一个包含以下文件的目录:1.gif、2.txt、card.gif 和一个仅包含文件 3.txt 的子目录 sub。

更新:

pathlib现在为最常见的路径操作提供了一个令人惊叹的界面。此任务也可以通过 pathlib 完成,如下所示:

from pathlib import Path

path = Path(r".") # path to the root dir from where you want to start searching

list(path.glob("**/*.txt"))
Out[1]: [WindowsPath('2.txt'), WindowsPath('sub/3.txt')]

有关旧答案,请参阅下文


使用glob.

来自文档:

glob() 将产生以下结果。请注意路径的所有前导组件是如何保留的。

>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']
>>> glob.glob('**/*.txt', recursive=True) #python 3.5+
['2.txt', 'sub/3.txt']
>>> glob.glob('./**/', recursive=True)
['./', './sub/']

对于Python<3.5

对于较旧的 Python 版本,使用 os.walk 递归地遍历目录,并使用 fnmatch.filter 来匹配简单的表达式:

import fnmatch
import os

matches = []
for root, dirnames, filenames in os.walk('src'):
    for filename in fnmatch.filter(filenames, '*.txt'):
        matches.append(os.path.join(root, filename))

关于python-3.x - 如何评估路径中的双星号(星号)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53250835/

相关文章:

java - 如何将apache的幻灯片形状元素转换为SVG PATH?

java - 供应商<X>和供应商<有什么区别?延伸X>

javascript - 允许在 url 末尾为 javascript 条件 css 样式使用通配符

java - .jar 文件的路径

path - 如何构建 mtp 设备的路径(可在文件夹浏览对话框中使用)?

python - Pandas :返回以特定数字开头的列值

python - 使用正则表达式解析带有单位的值范围

python - JSON 的嵌套序列化

python - 获取 'package' 和 'endpackage' 可选字符串之外的结构名称列表

python - 如何在 Windows 上安装 pyodbc 以与 Python 3.8 一起使用?