cid 510322961a984b896e09e215a5dba4ab4e83855cd52f524dd801629eb8f6b749 · original · open access · via pydoc
Title: fnmatch — Unix filename pattern matching — Python 3.13.18 documentation
Authors:
Venue: pydoc
Year: 2001
Canonical: pydoc:fnmatch@3.13
URL: https://docs.python.org/3.13/library/fnmatch.html
Collector: pydoc
OA: true
ABSTRACT
fnmatch — Unix filename pattern matching — Python 3.13.18 documentation Navigation index modules | next | previous | Python » 3.13.18 Documentation » The Python standard library » File and Directory Access » fnmatch — Unix filename pattern matching | Theme Auto Light Dark | fnmatch — Unix filename pattern matching¶ Source code: Lib/fnmatch.py This module provides support for Unix shell-style wildcards, which are not the same as regular expressions (which are documented in the re module). The special characters used in shell-style wildcards are: Pattern Meaning * matches everything ? matches any single character [seq] matches any character in seq [!seq] matches any character not in seq For a literal match, wrap the meta-characters in brackets. For example, '[?]' matches the character '?'. Note that the filename separator ('/' on Unix) is not special to this module. See module glob for pathname expansion (glob uses filter() to match pathname segments). Similarly, filenames starting with a period are not special for this module, and are matched by the * and ? patterns. Unless stated otherwise, “filename string” and “pattern string” either refer to str or ISO-8859-1 encoded bytes objects. Note that the functions documented below do not allow to mix a bytes pattern with a str filename, and vice-versa. Finally, note that @functools.lru_cache with a maxsize of 32768 is used to cache the (typed) compiled regex patterns in the following functions: fnmatch(), fnmatchcase(), filter(). fnmatch.fnmatch(name, pat)¶ Test whether the filename string name matches the pattern string pat, returning True or False. Both parameters are case-normalized using os.path.normcase(). fnmatchcase() can be used to perform a case-sensitive comparison, regardless of whether that’s standard for the operating system. This example will print all file names in the current directory with the extension .txt: import fnmatch import os for file in os.listdir('.'): if fnmatch.fnmatch(file, '*.txt'): print(file) fnmatch.fnmatchcase(name, pat)¶ Test whether the filename string name matches the pattern string pat, returning True or False; the comparison is case-sensitive and does not apply os.path.normcase(). fnmatch.filter(names, pat)¶ Construct a list from those elements of the iterable of filename strings names that match the pattern string pat. It is the same as [n for n in names if fnmatch(n, pat)], but implemented more efficiently. fnmatch.translate(pat)¶ Return the shell-style pattern pat converted to a regular expression for using with re.match(). The pattern is expected to be a str. Example: import fnmatch, re regex = fnmatch.translate('*.txt') regex '(?s:.*\\.txt)\\Z' reobj = re.compile(regex) reobj.match('foobar.txt') See also Module globUnix shell-style path expansion. Previous topic glob — Unix style pathname pattern expansion Next topic linecache — Random access to text lines This page Report a bug Show source « Navigation index modules | next | previous | Python » 3.13.18 Documentation » The Python standard library » File and Directory Access » fnmatch — Unix filename pattern matching | Theme Auto Light Dark | © Copyright 2001-2026, Python Software Foundation. This page is licensed under the Python Software Foundation License Version 2. Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License. See History and License for more information. The Python Software Foundation is a non-profit corporation. Please donate. Last updated on Oct 26, 2026 (13:10 UTC). Found a bug? Created using Sphinx 8.2.3.