
In Python, we have an inbuilt module os
that provides various methods and properties to perform operating system functionalities using Python code. The os module is compatible with all the popular operating systems such as Windows, Linux, and mac.
We often work with files in Python and encounter situations like where we need to list out all the files present in a directory or subdirectory. In such cases, we can use the os module’s listdir()
and walk()
methods to list all the files.
With listing files, we can also check for the files that are already present in the directory, so we do not rewrite or append their data in our program.
In this Python tutorial, we will walk through the os module’sos.listdir()
and os.walk()
methods, and learn how can we list all files present in the directory using Python only.
So let’s get started.
1. List Files & Folders in Python with os.listdir() method
If you only wish to print all the files and sub-directories present in a directory or folder then you can use the os module listdir()
method.
The listdir()
method accepts the path value of the directory as a string value and returns a list of files and subdirectories names present in that directory.
The list return by the listdir()
method will contain only the files and folders present in the specified directory path, it will not include the files and directories present in the sub-directories. This means the listdir()
method only include first level files and folders.
syntax
os.listdir(path)
If we do not specify the path argument to the listdir()
method, it will return a list of all files and folders where the Python program file is located. With this, we can list out all the files and folders present in the current directory.
Example 1
Let’s list out all the files and folders present in our C:\Users\lenovo\Desktop\code
directory.
# import the os module import os # specify the directory path as raw string path = r"C:\Users\lenovo\Desktop\code" # list all the files and directories present in the specified path all_files = os.listdir(path) # print all the directories and files. for file in all_files: print(file)
Output
.google-cookie .idea .ipynb_checkpoints googletranslatortutoirial.py gsearch.py GuiPython.py mysqltutorialpython.py my_key.key my_locked.pdf my_locked.zip New Text Document.txt urlshortnerconsole.py vulnarable_banners.txt WikipediaPytho.py youtubeapicomments.py ZipExtractpassword.py __pycache__
We can also use the listdir() method to check if a specific file present in our current working directory.
Example
# import the os module import os # specify the directory path as raw string path = r"C:\Users\lenovo\Desktop\code" # file to check file = "test.py" # list all the files and directories present in the specified path all_files = os.listdir(path) # check if the file present in the current directory result = file in all_files print(f"Does file {file} present in the current folder?: {result}")
Output
Does file test.py present in the current folder?: True
2. List Files & Folders in Python with os.walk() method
With os.listdir()
method we can only list out the first root level files and folders present in that directory. But if we wish to print all the files and folders present in the subdirectories.
The walk() function simply include all the directories and files present in the specified path directory.
Syntax
walk(path, topdown=True, onerror=None, followlinks=False)
The walk function can accept 4 argument values, which all are optional.
path
: is the string value that represents the directory path that all files and directories we want to list out. If it is not specified the walk() function list out all the files and folders of the current directory.
topdown
: It is a boolean value, by default its value is True, which means the walk method will scan all the directories and files from top to bottom. If we specify its value to False, the method will scan the directory from bottom to top.
onerror
: By default its value is None, this argument accepts a function object that can raise the error and continue scanning or stop the walk method.
followlinks
: It is also a Boolean value argument, which default value is False. We can also specify it True to visit directories pointed to by symlinks, on systems that support them.
Example
Let’s list out all the files and folders present in the directory C:\Users\lenovo\Desktop\code\project
# import the os module import os # specify the directory path as raw string path = r"C:\Users\lenovo\Desktop\code\project" # list all the files and directories present in the specified path for root, directories, files in os.walk(path): for name in files: print(os.path.join(root, name)) for name in directories: print(os.path.join(root, name))
Output
C:\Users\lenovo\Desktop\code\project\db.sqlite3 C:\Users\lenovo\Desktop\code\project\docker-compose.yml C:\Users\lenovo\Desktop\code\project\Dockerfile C:\Users\lenovo\Desktop\code\project\manage.py C:\Users\lenovo\Desktop\code\project\requirements.txt C:\Users\lenovo\Desktop\code\project\app C:\Users\lenovo\Desktop\code\project\mysite C:\Users\lenovo\Desktop\code\project\app\admin.py C:\Users\lenovo\Desktop\code\project\app\apps.py C:\Users\lenovo\Desktop\code\project\app\models.py C:\Users\lenovo\Desktop\code\project\app\tests.py C:\Users\lenovo\Desktop\code\project\app\urls.py C:\Users\lenovo\Desktop\code\project\app\views.py C:\Users\lenovo\Desktop\code\project\app\__init__.py C:\Users\lenovo\Desktop\code\project\app\migrations C:\Users\lenovo\Desktop\code\project\app\__pycache__ C:\Users\lenovo\Desktop\code\project\app\migrations\__init__.py C:\Users\lenovo\Desktop\code\project\app\migrations\__pycache__ C:\Users\lenovo\Desktop\code\project\app\migrations\__pycache__\__init__.cpython-39.pyc C:\Users\lenovo\Desktop\code\project\app\__pycache__\admin.cpython-39.pyc C:\Users\lenovo\Desktop\code\project\app\__pycache__\models.cpython-39.pyc C:\Users\lenovo\Desktop\code\project\app\__pycache__\urls.cpython-39.pyc C:\Users\lenovo\Desktop\code\project\app\__pycache__\views.cpython-39.pyc C:\Users\lenovo\Desktop\code\project\app\__pycache__\__init__.cpython-39.pyc C:\Users\lenovo\Desktop\code\project\mysite\asgi.py C:\Users\lenovo\Desktop\code\project\mysite\settings.py C:\Users\lenovo\Desktop\code\project\mysite\urls.py
Conclusion
There are two methods in the Python os module to list out the folders and files present in a directory. The os.listdir() method can list only the root level names of folders and files present in the specified directory. But with os.walk() method we can list out all the files and sub-directories present in the specified directory. In file management and handling, these two methods are very useful when checking for the files and folders present in the directory.
People are also reading:
- Python Dictionary Get: A Complete Guide
- Replace Item in Python List
- Python List Methods: All you need to Know
- How do you remove duplicates from a Python list while preserving order?
- Python Directory & File Management
- How to Find all files in a Directory with specific extension in Python?
- Python COPY File and Directory Using shutil
- Move File in Python: A Complete Guide
- Python Dictionary Methods
- Python Dictionary Append: How to Add Elements in a Python Dictionary?