"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 on "glob()" 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ı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.

   Not:

     Any "OSError" exceptions raised from scanning the filesystem are
     suppressed. This includes "PermissionError" when accessing
     directories without read permission.

   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.

   Not:

     Any "OSError" exceptions raised from scanning the filesystem are
     suppressed. This includes "PermissionError" when accessing
     directories without read permission.

   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.prefixmatch()". 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.prefixmatch('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.
