How to List Files in a Directory in Python
In this tutorial, we are going to learn two different ways of listing files/folders that are inside a directory in Python.
The os Module
os module has the
listdir() function, which lists all folders and files in the path supplied. Let's try this out on the current working directory (where the Python script is located) by supplying a
. (dot) as the first argument.
import os cwd = os.listdir('.') print(cwd)
['fil.txt', 'pandas_white.svg', 'download.py', 'env']
As is shown in the example above, we get a list of all files and folders in the directory.
If you want to get files in a different directory, supply its path, which could be relative to the Python script or a full path.
# up two directories: os.listdir('../..') # full path: os.listdir('/path/to/dir')
Read more about navigating directories using the cd command.
List Files Only
If you only want to list files, not subdirectories, use the following:
files = [f for f in os.listdir('.') if os.path.isfile(f)] for f in files: print(f)
file.txt file2.txt file3.zip
List all Matching Files with glob
glob module has the
iglob() function which can be used to list files in a directory. What makes it powerful is you can use Regular Expressions to match directories and files.
Let's say we wanted to list all the .txt files in the current directory. We could use iglob() like this:
import glob cwd = list(glob.iglob('./*txt')) print(cwd)
Recursively Search Directories in Python
We can use the
** comand in the
iglob() function to recursively search directories like this:
import glob cwd = list(glob.iglob('/Users/john/websites/**/*txt', recursive=True)) print(cwd)
recursive=True must be supplied for this to work.