glob
--- Ekspansi pola nama jalur bergaya Unix¶
Kode sumber: Lib/glob.py
The 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 files beginning with a dot (.
) can only be matched by
patterns that also start with a dot,
unlike fnmatch.fnmatch()
or pathlib.Path.glob()
.
(For tilde and shell variable expansion, use os.path.expanduser()
and
os.path.expandvars()
.)
Untuk mencocokan literal, bungkus karakter meta dalam tanda kurung. Misalnya, '[?]'
cocok dengan karakter '?'
.
Lihat juga
Modul pathlib
menawarkan objek jalur tingkat tinggi.
- glob.glob(pathname, *, root_dir=None, dir_fd=None, recursive=False, include_hidden=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). Whether or not the results are sorted depends on the file system. If a file that satisfies conditions is removed or added during the call of this function, whether a path name for that file be included is unspecified.If root_dir is not
None
, it should be a path-like object specifying the root directory for searching. It has the same effect onglob()
as changing the current directory before calling it. If pathname is relative, the result will contain paths relative to root_dir.This function can support paths relative to directory descriptors with the dir_fd parameter.
Jika rekursif benar, pola "
**
" akan cocok dengan semua file dan nol atau lebih direktori, subdirektori, dan tautan simbolis ke direktori. Jika pola diikuti olehos.sep
atauos.altsep
maka file tidak akan cocok.If include_hidden is true, "
**
" pattern will match hidden directories.Memunculkan auditing event
glob.glob
dengan argumentpathname
,recursive
.Raises an auditing event
glob.glob/2
with argumentspathname
,recursive
,root_dir
,dir_fd
.Catatan
Menggunakan pola "
**
" di pohon direktori yang besar dapat menghabiskan banyak waktu.Berubah pada versi 3.5: Dukungan untuk glob rekursif menggunakan "
**
".Berubah pada versi 3.10: Added the root_dir and dir_fd parameters.
Berubah pada versi 3.11: Added the include_hidden parameter.
- glob.iglob(pathname, *, root_dir=None, dir_fd=None, recursive=False, include_hidden=False)¶
Mengembalikan sebuah iterator yang menghasilkan nilai yang sama dengan
glob()
tanpa benar-benar menyimpan semuanya secara bersamaan.Memunculkan auditing event
glob.glob
dengan argumentpathname
,recursive
.Raises an auditing event
glob.glob/2
with argumentspathname
,recursive
,root_dir
,dir_fd
.Berubah pada versi 3.5: Dukungan untuk glob rekursif menggunakan "
**
".Berubah pada versi 3.10: Added the root_dir and dir_fd parameters.
Berubah pada versi 3.11: Added the include_hidden parameter.
- glob.escape(pathname)¶
Escape semua karakter khusus (
'?'
,'*'
dan'['
). Ini berguna jika Anda ingin mencocokkan string literal arbitrer yang mungkin memiliki karakter khusus di dalamnya. Karakter khusus dalam drive/titik berbagi UNC tidak di-escape, mis. pada Windowsescape('//?/c:/Quo vadis?.txt')
mengembalikan'//?/c:/Quo vadis[?].txt'
.Baru pada versi 3.4.
Misalnya, pertimbangkan direktori yang berisi file-file berikut: 1.gif
, 2.txt
, card.gif
dan subdirektori sub
yang hanya berisi file :file: 3.txt. glob()
akan memberikan hasil sebagai berikut. Perhatikan bagaimana komponen utama jalur dipertahankan.
>>> 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/']
Jika direktori berisi file yang dimulai dengan .
mereka tidak akan dicocokkan secara default. Misalnya, pertimbangkan direktori yang berisi card.gif
dan .card.gif
>>> import glob
>>> glob.glob('*.gif')
['card.gif']
>>> glob.glob('.c*')
['.card.gif']
Lihat juga
- Modul
fnmatch
Ekspansi nama file bergaya shell (bukan jalur)