Find all files in a directory with a given extension using Python

David Y.

The Problem

Using Python, how can I find all the files in a directory that have a certain extension, e.g. .txt?

The Solution

There are two ways to do this, depending on whether or not we want to search through subdirectories. To get all the files with a given file extension in the current directory, ignoring subdirectories, we can use glob.glob():

import glob, os os.chdir("/directory_to_search") # move to the search directory txt_files = [f for f in glob.glob("*.txt")] # will produce a list of .txt files

If we want to search subdirectories as well, we must use os.walk(). This function returns a generator iterator that can be used in a for loop to methodically traverse a filesystem tree, starting at a given path. For each level of the tree, os.walk() will return a three-value tuple, containing:

  • The name of the current directory.
  • A list of subdirectory names in the current directory.
  • A list of file names in the current directory.

By looping through the output of os.walk(), we can check each file within the top-level subdirectory and add it to our list if it ends in .txt:

import os txt_files = [] for root, dirs, files in os.walk("/directory_to_search"): for file in files: if file.endswith(".txt"): txt_files.append(os.path.join(root, file))
Join the discussionCome work with us
Share on Twitter
Bookmark this page
Ask a questionImprove this Answer

Related Answers

A better experience for your users. An easier life for your developers.

© 2023 • Sentry is a registered Trademark
of Functional Software, Inc.