fnmatch - Unix filename pattern matching in Python Last Updated : 22 Nov, 2020 Comments Improve Suggest changes 1 Likes Like Report This module is used for matching Unix shell-style wildcards. fnmatch() compares a single file name against a pattern and returns TRUE if they match else returns FALSE. The comparison is case-sensitive when the operating system uses a case-sensitive file system. The special characters and their functions used in shell-style wildcards are : '*' - matches everything '?' - matches any single character '[seq]' - matches any character in seq '[!seq]' - matches any character not in seq The meta-characters should be wrapped in brackets for a literal match. For example, '[?]' matches the character '?'. Functions provided by the fnmatch module fnmatch.fnmatch(filename, pattern): This function tests whether the given filename string matches the pattern string and returns a boolean value. If the operating system is case-insensitive, then both parameters will be normalized to all lower-case or upper-case before the comparison is performed. Example: Script to search all files starting with 'fnmatch' and ending in '.py' Python3 # Python program to illustrate # fnmatch.fnmatch(filename, pattern) import fnmatch import os pattern = 'fnmatch_*.py' print ('Pattern :', pattern ) print() files = os.listdir('.') for name in files: print ('Filename: %-25s %s' % (name, fnmatch.fnmatch(name, pattern)) Output : $ python fnmatch_fnmatch.py Pattern : fnmatch_*.py Filename: __init__.py False Filename: fnmatch_filter.py True Filename: fnmatch_fnmatch.py True Filename: fnmatch_fnmatchcase.py True Filename: fnmatch_translate.py True Filename: index.rst False fnmatch.fnmatchcase(filename, pattern): This function performs the case sensitive comparison and tests whether the given filename string matches the pattern string and returns a boolean value. Example: Script for a case-sensitive comparison, regardless of the filesystem and operating system settings. Python3 # Python program to illustrate # fnmatch.fnmatchcase(filename, pattern) import fnmatch import os pattern = 'FNMATCH_*.PY' print ('Pattern :', pattern) print() files = os.listdir('.') for name in files: (print 'Filename: %-25s %s' % (name, fnmatch.fnmatchcase(name, pattern))) Output : $ python fnmatch_fnmatchcase.py Pattern : FNMATCH_*.PY Filename: __init__.py False Filename: fnmatch_filter.py False Filename: FNMATCH_FNMATCH.PY True Filename: fnmatch_fnmatchcase.py False Filename: fnmatch_translate.py False Filename: index.rst False fnmatch.filter(names, pattern): This function returns the subset of the list of names passed in the function that match the given pattern. Example: Filter files by more than one file extension. Python3 # Python program to illustrate # fnmatch.filter(names, pattern) import fnmatch import os pattern = 'fnmatch_*.py' print ('Pattern :', pattern ) files = os.listdir('.') print ('Files :', files) print ('Matches :', fnmatch.filter(files, pattern)) Output : $ python fnmatch_filter.py Pattern : fnmatch_*.py Files : ['__init__.py', 'fnmatch_filter.py', 'fnmatch_fnmatch.py', 'fnmatch_fnmatchcase.py', 'fnmatch_translate.py', 'index.rst'] Matches : ['fnmatch_filter.py', 'fnmatch_fnmatch.py', 'fnmatch_fnmatchcase.py', 'fnmatch_translate.py'] fnmatch.translate(pattern): This function returns the shell-style pattern converted to a regular expression for using with re.match() (re.match() will only match at the beginning of the string and not at the beginning of each line). Python3 # Python program to illustrate # fnmatch.translate(pattern) import fnmatch, re regex = fnmatch.translate('*.txt') reobj = re.compile(regex) print(regex) print(reobj.match('foobar.txt')) Output : '(?s:.*\\.txt)\\Z' _sre.SRE_Match object; span=(0, 10), match='foobar.txt' Create Quiz Comment A ADITI GUPTA 2 1 Improve A ADITI GUPTA 2 1 Improve Article Tags : Python Explore Python FundamentalsPython Introduction 2 min read Input and Output in Python 4 min read Python Variables 4 min read Python Operators 4 min read Python Keywords 2 min read Python Data Types 8 min read Conditional Statements in Python 3 min read Loops in Python - For, While and Nested Loops 5 min read Python Functions 5 min read Recursion in Python 4 min read Python Lambda Functions 5 min read Python Data StructuresPython String 5 min read Python Lists 4 min read Python Tuples 4 min read Python Dictionary 3 min read Python Sets 6 min read Python Arrays 7 min read List Comprehension in Python 4 min read Advanced PythonPython OOP Concepts 11 min read Python Exception Handling 5 min read File Handling in Python 4 min read Python Database Tutorial 4 min read Python MongoDB Tutorial 3 min read Python MySQL 9 min read Python Packages 10 min read Python Modules 3 min read Python DSA Libraries 15 min read List of Python GUI Library and Packages 3 min read Data Science with PythonNumPy Tutorial - Python Library 3 min read Pandas Tutorial 4 min read Matplotlib Tutorial 5 min read Python Seaborn Tutorial 3 min read StatsModel Library - Tutorial 3 min read Learning Model Building in Scikit-learn 6 min read TensorFlow Tutorial 2 min read PyTorch Tutorial 6 min read Web Development with PythonFlask Tutorial 8 min read Django Tutorial | Learn Django Framework 7 min read Django ORM - Inserting, Updating & Deleting Data 4 min read Templating With Jinja2 in Flask 6 min read Django Templates 5 min read Build a REST API using Flask - Python 3 min read Building a Simple API with Django REST Framework 3 min read Python PracticePython Quiz 1 min read Python Coding Practice 1 min read Python Interview Questions and Answers 15+ min read Like