glob
— Unix 样式路径名模式扩展
¶
源代码: Lib/glob.py
glob
module finds all the pathnames matching a specified pattern according to the rules used by the Unix shell, although results are returned in arbitrary order. No tilde expansion is done, but
*
,
?
, and character ranges expressed with
[]
will be correctly matched. This is done by using the
os.scandir()
and
fnmatch.fnmatch()
functions in concert, and not by actually invoking a subshell. Note that unlike
fnmatch.fnmatch()
,
glob
treats filenames beginning with a dot (
.
) as special cases. (For tilde and shell variable expansion, use
os.path.expanduser()
and
os.path.expandvars()
.)
For a literal match, wrap the meta-characters in brackets. For example,
'[?]'
匹配字符
'?'
.
另请参阅
pathlib
模块提供高级路径对象。
glob.
glob
(
pathname
,
*
,
recursive=False
)
¶
Return a possibly-empty list of path names that match
pathname
, which must be a string containing a path specification.
pathname
can be either absolute (like
/usr/src/Python-1.5/Makefile
) or relative (like
../../Tools/*/*.gif
), and can contain shell-style wildcards. Broken symlinks are included in the results (as in the shell).
若
recursive
为 True,模式 “
**
” 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.
注意
使用 “
**
” pattern in large directory trees may consume an inordinate amount of time.
3.5 版改变:
Support for recursive globs using “
**
”.
glob.
iglob
(
pathname
,
*
,
recursive=False
)
¶
返回
iterator
which yields the same values as
glob()
without actually storing them all simultaneously.
glob.
escape
(
pathname
)
¶
转义所有特殊字符 (
'?'
,
'*'
and
'['
). This is useful if you want to match an arbitrary literal string that may have special characters in it. Special characters in drive/UNC sharepoints are not escaped, e.g. on Windows
escape('//?/c:/Quo
vadis?.txt')
返回
'//?/c:/Quo
vadis[?].txt'
.
3.4 版新增。
For example, consider a directory containing the following files:
1.gif
,
2.txt
,
card.gif
and a subdirectory
sub
which contains only the file
3.txt
.
glob()
will produce the following results. Notice how any leading components of the path are preserved.
>>> 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/']
If the directory contains files starting with
.
they won’t be matched by default. For example, consider a directory containing
card.gif
and
.card.gif
:
>>> import glob
>>> glob.glob('*.gif')
['card.gif']
>>> glob.glob('.c*')
['.card.gif']
另请参阅
fnmatch