# 11.7. `glob` --- Ekspansi pola nama jalur bergaya Unix

Kode sumber: Lib/glob.py

Modul `glob` menemukan semua nama lokasi yang cocok dengan pola yang ditentukan sesuai dengan aturan yang digunakan oleh shell Unix, meskipun hasilnya dikembalikan dalam urutan arbitrer. Tidak ada ekspansi tilde yang dilakukan, tetapi `*`, `?`, Dan rentang karakter yang diekspresikan dengan `[]` akan dicocokkan dengan benar. Ini dilakukan dengan menggunakan fungsi `os.scandir()` dan `fnmatch.fnmatch()` secara bersamaan, dan bukan dengan benar-benar memanggil subshell. Perhatikan bahwa tidak seperti `fnmatch.fnmatch()`, `glob` memperlakukan nama file yang dimulai dengan titik (`.`) sebagai kasus khusus. (Untuk ekspansi variabel tilde dan shell, gunakan `os.path.expanduser()` dan `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, *, 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).

  If recursive is true, the pattern "`**`" 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.

  Catatan

  Menggunakan pola "`**`" di pohon direktori yang besar dapat menghabiskan banyak waktu.

  Berubah pada versi 3.5: Dukungan untuk glob rekursif menggunakan "`**`".

`glob.``iglob`(pathname, *, recursive=False)

  Mengembalikan sebuah iterator yang menghasilkan nilai yang sama dengan `glob()` tanpa benar-benar menyimpan semuanya secara bersamaan.

`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 Windows `escape('//?/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)