17db96d56Sopenharmony_ci:mod:`glob` --- Unix style pathname pattern expansion 27db96d56Sopenharmony_ci===================================================== 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci.. module:: glob 57db96d56Sopenharmony_ci :synopsis: Unix shell style pathname pattern expansion. 67db96d56Sopenharmony_ci 77db96d56Sopenharmony_ci**Source code:** :source:`Lib/glob.py` 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ci.. index:: single: filenames; pathname expansion 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci-------------- 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_ci.. index:: 147db96d56Sopenharmony_ci single: * (asterisk); in glob-style wildcards 157db96d56Sopenharmony_ci single: ? (question mark); in glob-style wildcards 167db96d56Sopenharmony_ci single: [] (square brackets); in glob-style wildcards 177db96d56Sopenharmony_ci single: ! (exclamation); in glob-style wildcards 187db96d56Sopenharmony_ci single: - (minus); in glob-style wildcards 197db96d56Sopenharmony_ci single: . (dot); in glob-style wildcards 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_ciThe :mod:`glob` module finds all the pathnames matching a specified pattern 227db96d56Sopenharmony_ciaccording to the rules used by the Unix shell, although results are returned in 237db96d56Sopenharmony_ciarbitrary order. No tilde expansion is done, but ``*``, ``?``, and character 247db96d56Sopenharmony_ciranges expressed with ``[]`` will be correctly matched. This is done by using 257db96d56Sopenharmony_cithe :func:`os.scandir` and :func:`fnmatch.fnmatch` functions in concert, and 267db96d56Sopenharmony_cinot by actually invoking a subshell. 277db96d56Sopenharmony_ci 287db96d56Sopenharmony_ciNote that files beginning with a dot (``.``) can only be matched by 297db96d56Sopenharmony_cipatterns that also start with a dot, 307db96d56Sopenharmony_ciunlike :func:`fnmatch.fnmatch` or :func:`pathlib.Path.glob`. 317db96d56Sopenharmony_ci(For tilde and shell variable expansion, use :func:`os.path.expanduser` and 327db96d56Sopenharmony_ci:func:`os.path.expandvars`.) 337db96d56Sopenharmony_ci 347db96d56Sopenharmony_ciFor a literal match, wrap the meta-characters in brackets. 357db96d56Sopenharmony_ciFor example, ``'[?]'`` matches the character ``'?'``. 367db96d56Sopenharmony_ci 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ci.. seealso:: 397db96d56Sopenharmony_ci The :mod:`pathlib` module offers high-level path objects. 407db96d56Sopenharmony_ci 417db96d56Sopenharmony_ci 427db96d56Sopenharmony_ci.. function:: glob(pathname, *, root_dir=None, dir_fd=None, recursive=False, \ 437db96d56Sopenharmony_ci include_hidden=False) 447db96d56Sopenharmony_ci 457db96d56Sopenharmony_ci Return a possibly empty list of path names that match *pathname*, which must be 467db96d56Sopenharmony_ci a string containing a path specification. *pathname* can be either absolute 477db96d56Sopenharmony_ci (like :file:`/usr/src/Python-1.5/Makefile`) or relative (like 487db96d56Sopenharmony_ci :file:`../../Tools/\*/\*.gif`), and can contain shell-style wildcards. Broken 497db96d56Sopenharmony_ci symlinks are included in the results (as in the shell). Whether or not the 507db96d56Sopenharmony_ci results are sorted depends on the file system. If a file that satisfies 517db96d56Sopenharmony_ci conditions is removed or added during the call of this function, whether 527db96d56Sopenharmony_ci a path name for that file be included is unspecified. 537db96d56Sopenharmony_ci 547db96d56Sopenharmony_ci If *root_dir* is not ``None``, it should be a :term:`path-like object` 557db96d56Sopenharmony_ci specifying the root directory for searching. It has the same effect on 567db96d56Sopenharmony_ci :func:`glob` as changing the current directory before calling it. If 577db96d56Sopenharmony_ci *pathname* is relative, the result will contain paths relative to 587db96d56Sopenharmony_ci *root_dir*. 597db96d56Sopenharmony_ci 607db96d56Sopenharmony_ci This function can support :ref:`paths relative to directory descriptors 617db96d56Sopenharmony_ci <dir_fd>` with the *dir_fd* parameter. 627db96d56Sopenharmony_ci 637db96d56Sopenharmony_ci .. index:: 647db96d56Sopenharmony_ci single: **; in glob-style wildcards 657db96d56Sopenharmony_ci 667db96d56Sopenharmony_ci If *recursive* is true, the pattern "``**``" will match any files and zero or 677db96d56Sopenharmony_ci more directories, subdirectories and symbolic links to directories. If the 687db96d56Sopenharmony_ci pattern is followed by an :data:`os.sep` or :data:`os.altsep` then files will not 697db96d56Sopenharmony_ci match. 707db96d56Sopenharmony_ci 717db96d56Sopenharmony_ci If *include_hidden* is true, "``**``" pattern will match hidden directories. 727db96d56Sopenharmony_ci 737db96d56Sopenharmony_ci .. audit-event:: glob.glob pathname,recursive glob.glob 747db96d56Sopenharmony_ci .. audit-event:: glob.glob/2 pathname,recursive,root_dir,dir_fd glob.glob 757db96d56Sopenharmony_ci 767db96d56Sopenharmony_ci .. note:: 777db96d56Sopenharmony_ci Using the "``**``" pattern in large directory trees may consume 787db96d56Sopenharmony_ci an inordinate amount of time. 797db96d56Sopenharmony_ci 807db96d56Sopenharmony_ci .. versionchanged:: 3.5 817db96d56Sopenharmony_ci Support for recursive globs using "``**``". 827db96d56Sopenharmony_ci 837db96d56Sopenharmony_ci .. versionchanged:: 3.10 847db96d56Sopenharmony_ci Added the *root_dir* and *dir_fd* parameters. 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_ci .. versionchanged:: 3.11 877db96d56Sopenharmony_ci Added the *include_hidden* parameter. 887db96d56Sopenharmony_ci 897db96d56Sopenharmony_ci 907db96d56Sopenharmony_ci.. function:: iglob(pathname, *, root_dir=None, dir_fd=None, recursive=False, \ 917db96d56Sopenharmony_ci include_hidden=False) 927db96d56Sopenharmony_ci 937db96d56Sopenharmony_ci Return an :term:`iterator` which yields the same values as :func:`glob` 947db96d56Sopenharmony_ci without actually storing them all simultaneously. 957db96d56Sopenharmony_ci 967db96d56Sopenharmony_ci .. audit-event:: glob.glob pathname,recursive glob.iglob 977db96d56Sopenharmony_ci .. audit-event:: glob.glob/2 pathname,recursive,root_dir,dir_fd glob.iglob 987db96d56Sopenharmony_ci 997db96d56Sopenharmony_ci .. versionchanged:: 3.5 1007db96d56Sopenharmony_ci Support for recursive globs using "``**``". 1017db96d56Sopenharmony_ci 1027db96d56Sopenharmony_ci .. versionchanged:: 3.10 1037db96d56Sopenharmony_ci Added the *root_dir* and *dir_fd* parameters. 1047db96d56Sopenharmony_ci 1057db96d56Sopenharmony_ci .. versionchanged:: 3.11 1067db96d56Sopenharmony_ci Added the *include_hidden* parameter. 1077db96d56Sopenharmony_ci 1087db96d56Sopenharmony_ci 1097db96d56Sopenharmony_ci.. function:: escape(pathname) 1107db96d56Sopenharmony_ci 1117db96d56Sopenharmony_ci Escape all special characters (``'?'``, ``'*'`` and ``'['``). 1127db96d56Sopenharmony_ci This is useful if you want to match an arbitrary literal string that may 1137db96d56Sopenharmony_ci have special characters in it. Special characters in drive/UNC 1147db96d56Sopenharmony_ci sharepoints are not escaped, e.g. on Windows 1157db96d56Sopenharmony_ci ``escape('//?/c:/Quo vadis?.txt')`` returns ``'//?/c:/Quo vadis[?].txt'``. 1167db96d56Sopenharmony_ci 1177db96d56Sopenharmony_ci .. versionadded:: 3.4 1187db96d56Sopenharmony_ci 1197db96d56Sopenharmony_ci 1207db96d56Sopenharmony_ciFor example, consider a directory containing the following files: 1217db96d56Sopenharmony_ci:file:`1.gif`, :file:`2.txt`, :file:`card.gif` and a subdirectory :file:`sub` 1227db96d56Sopenharmony_ciwhich contains only the file :file:`3.txt`. :func:`glob` will produce 1237db96d56Sopenharmony_cithe following results. Notice how any leading components of the path are 1247db96d56Sopenharmony_cipreserved. :: 1257db96d56Sopenharmony_ci 1267db96d56Sopenharmony_ci >>> import glob 1277db96d56Sopenharmony_ci >>> glob.glob('./[0-9].*') 1287db96d56Sopenharmony_ci ['./1.gif', './2.txt'] 1297db96d56Sopenharmony_ci >>> glob.glob('*.gif') 1307db96d56Sopenharmony_ci ['1.gif', 'card.gif'] 1317db96d56Sopenharmony_ci >>> glob.glob('?.gif') 1327db96d56Sopenharmony_ci ['1.gif'] 1337db96d56Sopenharmony_ci >>> glob.glob('**/*.txt', recursive=True) 1347db96d56Sopenharmony_ci ['2.txt', 'sub/3.txt'] 1357db96d56Sopenharmony_ci >>> glob.glob('./**/', recursive=True) 1367db96d56Sopenharmony_ci ['./', './sub/'] 1377db96d56Sopenharmony_ci 1387db96d56Sopenharmony_ciIf the directory contains files starting with ``.`` they won't be matched by 1397db96d56Sopenharmony_cidefault. For example, consider a directory containing :file:`card.gif` and 1407db96d56Sopenharmony_ci:file:`.card.gif`:: 1417db96d56Sopenharmony_ci 1427db96d56Sopenharmony_ci >>> import glob 1437db96d56Sopenharmony_ci >>> glob.glob('*.gif') 1447db96d56Sopenharmony_ci ['card.gif'] 1457db96d56Sopenharmony_ci >>> glob.glob('.c*') 1467db96d56Sopenharmony_ci ['.card.gif'] 1477db96d56Sopenharmony_ci 1487db96d56Sopenharmony_ci.. seealso:: 1497db96d56Sopenharmony_ci 1507db96d56Sopenharmony_ci Module :mod:`fnmatch` 1517db96d56Sopenharmony_ci Shell-style filename (not path) expansion 152