python3从零学习-5.4.7、Unix风格路径名模式扩展glob

源代码: Lib/glob.py


glob  模块可根据 Unix 终端所用规则找出所有匹配特定模式的路径名,但会按不确定的顺序返回结果。 波浪号扩展不会生效,但  * ?  以及表示为  []  的字符范围将被正确地匹配。 这是通过配合使用  os.scandir()  和  fnmatch.fnmatch()  函数来实现的,而不是通过实际发起调用子终端。 请注意不同于  fnmatch.fnmatch() glob  会将以点号 ( . ) 开头的文件名作为特殊情况来处理。 (对于波浪号和终端变量扩展,请使用  os.path.expanduser()  和  os.path.expandvars() 。)
对于字面值匹配,请将原字符用方括号括起来。 例如, '[?]'  将匹配字符  '?'
  • glob.glob(pathname, *, recursive=False)

返回匹配  pathname  的可能为空的路径名列表,路径名必须为包含一个路径描述的字符串。  pathname  可以是绝对路径 (如  /usr/src/Python-1.5/Makefile ) 或相对路径 (如  ../../Tools/*/*.gif ),并且可包含 shell 风格的通配符。 无效的符号链接可以包含在结果中 (与在 shell 中一样)。
If  recursive  is true, the pattern “ ** ” will match any files and zero or more directories and subdirectories. If the pattern is followed by an  os.sep , only directories and subdirectories match.
注解
在一个较大的目录树中使用 “ ** ” 模式可能会消耗非常多的时间。
在 3.5 版更改:  支持使用 “ ** ” 的递归 glob.
  • glob.iglob(pathname, *, recursive=False)

返回一个  iterator ,它会产生与  glob()  相同的结果,但不会实际地同时保存它们。
  • 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']

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值