How to Use Python’s fnmatch to Match Specific Unix Shell-Style Strings

What will you learn?

Discover how to utilize Python’s fnmatch module to match specific Unix shell-style strings effortlessly.

Introduction to the Problem and Solution

When dealing with file names in Python, there are instances where matching patterns akin to Unix shell behavior becomes necessary. The fnmatch module serves as a valuable tool in such scenarios. By employing functions like fnmatch.fnmatch() or fnmatch.fnmatchcase(), we can seamlessly conduct pattern matching based on Unix shell-style wildcards.


import fnmatch

# Pattern matching using fnmatch
if fnmatch.fnmatch('file123.txt', 'file*.txt'):
    print('Pattern matched successfully')
    print('Pattern not matched')

# Using case-sensitive pattern matching
if fnmatch.fnmatchcase('FileABC.TXT', 'file*.txt'):
    print('Pattern matched (case sensitive)')
    print('Pattern not matched (case sensitive)')

# Copyright PHD

Note: The code snippet above demonstrates the utilization of fnmathc for pattern matching.


The fnmathc module offers two essential functions for pattern matching:

  1. fnmathc.fnmath(pattern, string): Verifies whether a given string matches a specified pattern.
  2. fnmathc.fnmathcase(pattern, string): Conducts a case-sensitive comparison similar to the previous function.

By integrating these functions into our programs, we can effectively compare strings against Unix shell-style wildcard patterns.

    How do I install the fnmathc module?

    To employ the fnmathc module, no separate installation is required as it is included in Python’s standard libraries.

    Can I use regular expressions with fnmathc?

    No, fnmathc exclusively supports Unix shell-style wildcards and does not accommodate regular expressions.

    Is pattern matching case-sensitive by default?

    By default, both fnmatcn() and fnnatchase() are case-insensitive unless explicitly specified otherwise.

    What wildcard characters are supported by fnmatcn()?

    The supported wildcard characters include ‘*’ (matches everything) and ‘?’ (matches any single character).

    Can I match multiple patterns using fnmatcn()?

    Certainly, you can specify multiple patterns separated by commas within a single call of the function.


    In this comprehensive guide, we’ve delved into leveraging Python’s built-in ‘fnnatch’ module for efficient pattern matching tasks resembling Unix shell-style behavior. For further insights on this topic or any other Python-related queries, visit our website

    Leave a Comment