glob — Unix tarzı yol adı kalıp açılımı

Kaynak kod Lib/glob.py


glob modülü Unix kabuğu tarafından kullanılan kurallarına uyarak spesifik desenlerle eşleşen tüm yol adlarını bulur ve sonucu gelişigüzel bir sırada ile döndürür. Tilde açılımı yapılmaz fakat [] içinde ifade edilen karakter aralığı ve *, ? karakterleri eşleştirilir. Bu işlem os.scandir() ve fnmatch.fnmatch() fonksiyonlarının birlikte çalışması ile olur ve bir altkabuk çağırılmaz.

Dikkat edilmeli ki fnmatch.fnmatch() veya pathlib.Path.glob() aksine, nokta (.) ile başlayan dosyalar sadece nokta ile başlayan desenler ile eşleştirilebilir. (Tilde ve kabuk değişken açılımları için os.path.expanduser() ve os.path.expandvars() kullanın.)

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.

Eğer root_dir None değilse, arama için kök dizini belirten bir yol benzeri nesne olmalıdır. Bu, glob() fonksiyonu üzerinde, fonksiyonu çağırmadan önce geçerli dizini değiştirmekle aynı etkiyi yaratır. Eğer pathname göreceli bir yol ise, sonuç root_dir’den itibaren oluşturulmuş göreceli yolları içerir.

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ından os.sep veya os.altsep gelirse dosyalar eşlenmez.

Eğer include_hidden True ise, “**” deseni gizli dizinleri de eşler.

pathname, recursive argümanları ile glob.glob fonksiyonu için bir denetim olayı tetikler.

pathname, recursive , root_dir, dir_fd argümanları ile glob.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ı ile glob.glob fonksiyonu için bir denetim olayı tetikler.

pathname, recursive , root_dir, dir_fd argümanları ile glob.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’ta escape('//?/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 and altsep (if available) are used.

Ayrıca bakınız

pathlib.PurePath.full_match() and pathlib.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.