glob
— Unix tarzı yol adı kalıp açılımı¶
Kaynak kod Lib/glob.py
The glob
module finds pathnames
using pattern matching rules similar to the Unix shell.
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.
Not
The pathnames are returned in no particular order. If you need a specific order, sort the results.
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()
.
Harfi harfine eşleşme için meta-karakter’leri köşeli parantez içine koyun. Örneğin, '[?]'
deseni '?'
karakteri ile eşleşir.
The glob
module defines the following functions:
- glob.glob(pathname, *, root_dir=None, dir_fd=None, recursive=False, include_hidden=False)¶
pathname ile eşleşen bir liste döndürür ve bu boş liste de olabilir. pathname, dizin yolu belirtimi içeren bir string olmalıdır. pathname hem mutlak (örneğin
/usr/src/Python-1.5/Makefile
) hem de göreceli (örneğin../../Tools/*/*.gif
) olabilir ve kabuk-tarzı joker karakterler de içerebilir. Bozuk sembolik bağlantılar de sonuçlara dahil edilir (kabukta olduğu gibi). Sonucun sıralanmış olup olmaması dosya sistemine bağlıdır. Eğer eşleşmeye uyan bir dosya bu fonksiyonun çağrılması sırasında kaldırılırsa veya eklenirse dönüş değerinde dosyanın bulunup bulunmayacağı belirsizdir.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.Bu fonksiyon dir_fd parametresi ile dizin tanımlayıcılarına göre dosya yolları destekler .
Eğer recursive True ise “
**
” deseni tüm dosyaları ve sıfır veya daha fazla dizin, alt dizin ve dizinlere işaret eden sembolik bağlantılarla eşleşir. Eğer desen ardındanos.sep
veyaos.altsep
gelirse dosyalar eşlenmez.Eğer include_hidden True ise, “
**
” deseni gizli dizinleri de eşler.pathname
,recursive
argümanları ileglob.glob
fonksiyonu için bir denetim olayı tetikler.pathname
,recursive
,root_dir
,dir_fd
argümanları ileglob.glob/2
fonksiyonu için bir denetim olayı tetikler.Not
“
**
” deseninin geniş dizin ağaçlarıyla kullanımı aşırı derecede zaman harcar.Not
Eğer pathname birden fazla “
**
” deseni içerirse ve recursive True ise fonksiyon tekrar eden yol adları döndürebilir.3.5 sürümünde değişti: “
**
” kullanarak yinelemeli glob’lar için destek eklendi.3.10 sürümünde değişti: root_dir ve dir_fd parametreleri eklendi.
3.11 sürümünde değişti: include_hidden parametresi eklendi.
- glob.iglob(pathname, *, root_dir=None, dir_fd=None, recursive=False, include_hidden=False)¶
glob()
fonksiyonuyla aynı değerleri döndüren fakat eş zamanlı olarak saklamayan bir yineleyici döndürür.pathname
,recursive
argümanları ileglob.glob
fonksiyonu için bir denetim olayı tetikler.pathname
,recursive
,root_dir
,dir_fd
argümanları ileglob.glob/2
fonksiyonu için bir denetim olayı tetikler.Not
Eğer pathname birden fazla “
**
” deseni içerirse ve recursive True ise fonksiyon tekrar eden yol adları döndürebilir.3.5 sürümünde değişti: “
**
” kullanarak yinelemeli glob’lar için destek eklendi.3.10 sürümünde değişti: root_dir ve dir_fd parametreleri eklendi.
3.11 sürümünde değişti: include_hidden parametresi eklendi.
- glob.escape(pathname)¶
Tüm özel karakterlerden (
'?'
,'*'
and'['
) kaçar. Eğer özel karakterler içerme ihtimali olan belirsiz bir dizini harfi harfine eşleştirmek istiyorsanız faydalıdır. Sürücü/UNC paylaşım noktalarındaki özel karakterler kaçırılamaz; örneğin Windows’taescape('//?/c:/Quo vadis?.txt')
'//?/c:/Quo vadis[?].txt'
döndürür.Added in version 3.4.
- glob.translate(pathname, *, recursive=False, include_hidden=False, seps=None)¶
Convert the given path specification to a regular expression for use with
re.match()
. The path specification can contain shell-style wildcards.For example:
>>> import glob, re >>> >>> regex = glob.translate('**/*.txt', recursive=True, include_hidden=True) >>> regex '(?s:(?:.+/)?[^/]*\\.txt)\\z' >>> reobj = re.compile(regex) >>> reobj.match('foo/bar/baz.txt') <re.Match object; span=(0, 15), match='foo/bar/baz.txt'>
Path separators and segments are meaningful to this function, unlike
fnmatch.translate()
. By default wildcards do not match path separators, and*
pattern segments match precisely one path segment.If recursive is true, the pattern segment “
**
” will match any number of path segments.If include_hidden is true, wildcards can match path segments that start with a dot (
.
).A sequence of path separators may be supplied to the seps argument. If not given,
os.sep
andaltsep
(if available) are used.Ayrıca bakınız
pathlib.PurePath.full_match()
andpathlib.Path.glob()
methods, which call this function to implement pattern matching and globbing.Added in version 3.13.
Examples¶
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/']
Eğer dizin .
ile başlayan dosyalar içeriyorsa varsayılan olarak eşleştirilmezler. Örneğin, card.gif
and .card.gif
:: dosyalarını içeren bir dizin düşünün.
>>> import glob
>>> glob.glob('*.gif')
['card.gif']
>>> glob.glob('.c*')
['.card.gif']
Ayrıca bakınız
The fnmatch
module offers shell-style filename (not path) expansion.
Ayrıca bakınız
pathlib
modülü yüksek-seviye dizin yolu nesneleri döndürür.