We can get a list of files in a directory or folder in Python using the function os.listdir which takes the folder path as an argument and lists the names of all files and folders inside the given directory.

List names of all files and folders in a directory

If we simply want to find the names of all files and folders in a directory, then use the following Python code snippet by replacing folder_path with your folder path.

from os import listdir

files_folders = [file_folder_name for file_folder_name in listdir(folder_path) ]Code language: Python (python)

List names of files only in a directory in Python

If you want to list only files in a directory, then use the following Python code snippet by replacing folder_path with your folder path. This works only in Python 3.5 or later..

from os import scandir

folders_only = [folder.name for folder in scandir(folder_path) if folder.is_file() ]Code language: Python (python)

Alternately, for versions of Python older than 3.5 you can use the following code to list file names.

from os import listdir
from os.path import isfile, join

files_only = [file_name for file_name in listdir(folder_path) if isfile(join(folder_path,file_name))]Code language: Python (python)

List names of sub folders in a directory in Python

If you want to list only sub directories in a directory, then use the following Python code snippet by replacing folder_path with your folder path. This works only in Python 3.5 or later.

from os import scandir

folders_only = [folder.name for folder in scandir(folder_path) if folder.is_dir() ]Code language: Python (python)

Alternately, for versions of Python older than 3.5 you can use the following code to list names of sub directories.

from os import listdir
from os.path import isfile, join

folders_only = [folder_name for folder_name in listdir(folder_path) if not isfile(join(folder_path,folder_name))]Code language: Python (python)

List all files with a given extension only in Python

If you want to list only those files in a directory having a given extension, you can do it in Python as follows. Replace ‘extension’ with you extension like ‘.txt’ or ‘.jpg’ or ‘.pdf’.

from os import listdir
from os.path import isfile, join

files_only = [file_name for file_name in listdir(folder_path) if isfile(join(folder_path,file_name)) and file_name.endswith(extension)]Code language: Python (python)

List files in a directory using glob

Alternately, you can use glob to list all files in a directory. The benefit of using glob is that it allows patterns to be used to match file names. It also returns the complete path of the each file. For instance to find all text files in a folder using glob the corresponding code would be:

import glob

text_files_with_path = glob.glob("/my_folder_path/*.txt")Code language: Python (python)