Python program to list all files in a directory
Learn how to list all the files in any given directory in Python.
Method 1 - Using os.listdir()
You can use
os.listdir() to get you everything that is present in a directory (both files and directories).
import os # List everything in current directory print(os.listdir()) # List everything in a different directory print(os.listdir('C:\\Users\\91824\\'))
The above code gets you every file and directory present in the path.
Method 2 - Using os.path
If you just want files, you could filter the above code down using
from os import listdir from os.path import isfile, join dir_to_search = 'C:\\Users\\91824\\' for file in listdir(dir_to_search): if isfile(join(dir_to_search, file)): print(file)
Method 3 - Using os.walk()
You could also use
os.walk() function which will generate the file names present in a directory by going through the directory tree, either top-down or bottom-up.
import os dir_to_search = 'C:\\Users\\91824\\' files =  for (dirpath, dirnames, filenames) in os.walk(dir_to_search, topdown=True): files.append(filenames)
You could also make it shorter.
import os dir_to_search = 'C:\\Users\\91824\\' _, _, filenames = next(os.walk(dir_to_search))
Method 4 - Using glob module for pattern matching
If you want to search for only specific types of files like
.csv, use the
glob module. It will return a list of files matching the pattern.
import glob dir_to_search = 'C:\\Users\\91824\\' pattern = "*.txt" print(glob.glob(dir_to_search+"\\"+pattern))
This method doesn’t search for the files in the subdirectories. To search in all the subdirectories, use
os.walk with the
import os import glob dir_to_search = 'C:\\Users\\91824\\PycharmProjects' pattern = "*.py" files =  for (dirpath, dirnames, filenames) in os.walk(dir_to_search, topdown=True): for dir in dirnames: print(glob.glob(os.path.join(dirpath, dir)+"\\"+pattern))