David Y.
—Using Python, how can I find all the files in a directory that have a certain extension, e.g. .txt
?
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:
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))
Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.
SEE EPISODESConsidered “not bad” by 4 million developers and more than 100,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.