glob --- Unix 风格路径名模式扩展

源代码: Lib/glob.py


glob 模块会按照 Unix shell 所使用的规则找出所有匹配特定模式的路径名称,但返回结果的顺序是不确定的。 波浪号扩展不会生效,但 *, ? 以及用 [] 表示的字符范围将被正确地匹配。 这是通过配合使用 os.scandir()fnmatch.fnmatch() 函数来实现的,而不是通过实际发起调用子 shell。

请注意以点号 (.) 打头的文件只能用同样以点号打头的模式来匹配,这不同于 fnmatch.fnmatch()pathlib.Path.glob()。 (对于波浪号和 shell 变量扩展,请使用 os.path.expanduser()os.path.expandvars()。)

对于字面值匹配,请将原字符用方括号括起来。 例如,'[?]' 将匹配字符 '?'

参见

pathlib 模块提供高级路径对象。

glob.glob(pathname , * , root_dir=None , dir_fd=None , recursive=False , include_hidden=False )

返回一个匹配 pathname 的可能为空的路径名列表,其中的元素必须为包含路径信息的字符串。 pathname 可以是绝对路径 (如 /usr/src/Python-1.5/Makefile) 或相对路径 (如 ../../Tools/*/*.gif),并可包含 shell 风格的通配符。 无效的符号链接也将包括在结果中 (如像在 shell 中一样)。 结果是否排序取决于具体文件系统。 如果某个符合条件的文件在调用此函数期间被移除或添加,是否包括该文件的路径是没有规定的。

如果 root_dir 不为 None,则它应当是指明要搜索的根目录的 path-like object。 它用在 glob() 上与在调用它之前改变当前目录有相同的效果。 如果 pathname 为相对路径,结果将包含相对于 root_dir 的路径。

本函数带有 dir_fd 参数,支持 基于目录描述符的相对路径

如果 recursive 为真值,则模式 "**" 将匹配目录中的任何文件以及零个或多个目录、子目录和符号链接。 如果模式加了一个 os.sepos.altsep 则将不匹配文件。

如果 include_hidden 为真值,"**" 模式将匹配隐藏目录。

引发一个 审计事件 glob.glob 附带参数 pathname, recursive

引发一个 审计事件 glob.glob/2,附带参数 pathname, recursive, root_dir, dir_fd

备注

在一个较大的目录树中使用 "**" 模式可能会消耗非常多的时间。

在 3.5 版更改: 支持使用 "**" 的递归 glob。

在 3.10 版更改: 添加了 root_dirdir_fd 形参。

在 3.11 版更改: 增加了 include_hidden 形参。

glob.iglob(pathname , * , root_dir=None , dir_fd=None , recursive=False , include_hidden=False)

返回一个 iterator,它会产生与 glob() 相同的结果,但不会实际地同时保存它们。

引发一个 审计事件 glob.glob 附带参数 pathname, recursive

引发一个 审计事件 glob.glob/2,附带参数 pathname, recursive, root_dir, dir_fd

在 3.5 版更改: 支持使用 "**" 的递归 glob。

在 3.10 版更改: 添加了 root_dirdir_fd 形参。

在 3.11 版更改: 增加了 include_hidden 形参。

glob.escape(pathname)

转义所有特殊字符 ('?', '*''[')。 这适用于当你想要匹配可能带有特殊字符的任意字符串字面值的情况。 在 drive/UNC 共享点中的特殊字符不会被转义,例如在 Windows 上 escape('//?/c:/Quo vadis?.txt') 将返回 '//?/c:/Quo vadis[?].txt'

3.4 新版功能.

例如,考虑一个包含以下内容的目录:文件 1.gif, 2.txt, card.gif 以及一个子目录 sub 其中只包含一个文件 3.txt. 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)
['2.txt', 'sub/3.txt']
>>> glob.glob('./**/', recursive=True)
['./', './sub/']

如果目录包含以 . 打头的文件,它们默认将不会被匹配。 例如,考虑一个包含 card.gif.card.gif 的目录:

>>>

复制代码
>>> import glob
>>> glob.glob('*.gif')
['card.gif']
>>> glob.glob('.c*')
['.card.gif']

参见

模块 fnmatch

Shell 风格文件名(而非路径)扩展

相关推荐
威联通网络存储2 小时前
TS-h3087XU-RP 汽车零部件质检追溯部署
python·汽车
你驴我2 小时前
WhatsApp 多账号场景下的会话归档与历史消息检索优化实践
后端·python
IT毕设实战小研2 小时前
基于安卓的空气质量查询系统
android·大数据·vue.js·爬虫·python·django·课程设计
harmful_sheep3 小时前
java group by常见用法
java·开发语言·python
whcyhhh3 小时前
头歌实践教学平台:数据科学与大数据技术导论(十六)
大数据·开发语言·python
宸津-代码粉碎机4 小时前
AI工程化高阶实战|从Demo到生产落地核心架构、全套源码与避坑指南
java·大数据·开发语言·人工智能·python·架构
郝学胜-神的一滴5 小时前
Effective Python 条款4:字符串格式化大乱斗
开发语言·网络·python·程序人生·软件工程
ynchyong5 小时前
Python 字符组合生成器:product 与 permutations 的实战对比
python·工具·字符串生产
benchmark_cc5 小时前
1000只ETF的5分钟K线如何批量获取?QuantDash分页策略与高性能Python实践
开发语言·人工智能·爬虫·python·算法·quantdash·量化数据源
sel_95 小时前
【PEFT】参数高效微调(PEFT)技术详解:从原理到 LoRA/QLoRA 实战
人工智能·python·深度学习·算法·机器学习·参数高效微调