Create nested directories in Python [Practical Examples]


Python

How to create nested directories in Python

File creation and manipulation is considered a critical operation for any application. While creating a file, if any mistakes are made, it will affect the performance and working of the whole application. To create a nested directories from an absolute path is risky because the success of the command completely depends on the existing parent directories where nesting is done. Due care is required to be taken and monitored after directory creation.

The pathlib library and the os module have methods to safely create a nested directory. There are three different ways to create a nested directories.

  • Using pathlib.Path.mkdir()
  • Using os.makedirs()
  • Using distutils.dir_util

 

Method-1: Using pathlib.Path.mkdir()

The pathlib module manipulates files and folders using the object-oriented approach. Firstly, we will need to import the Path class from the pathlib module. Thereafter, create a new instance of Path class and initialize it with the nested directory structure to be created.
For all versions higher than or equal to 3.5, mkdir() is used to create a new directory at a given path. The syntax of mkdir is as shown below.

mkdir(mode=0o777, parents=False, exist_ok=False)

Here, all three parameters are optional. If mode is given, it determines the file mode and access flags. However, if the path already exists, then it will raise a FileExistsError exception.

If the parameter parents is set to true, then any missing parents of this path are created with the default permissions without taking mode into account. However, if it is set to false, a missing parent will raise a FileNotFoundError exception.

If the parameter exist_ok is true, FileExistsError exceptions will be ignored but only if the last path component is not an existing non-directory file. Otherwise, it will raise a FileExistsError exception.

 

Example 1:In this example, none of our parent directory is present. So, we will give parameter parents=True so that directory hierarchy is created as we expect it to be.

# Importing Path from pathlib 
from pathlib import Path

# Forming a directory structure required as a path
path = Path("C:/PythonDemo/NestedDemo")

# Using mkdir to create a directory structure and create the intermediate directories if they are not existing
path.mkdir(parents=True)
print("Directory structure created successfully")

Output

Directory structure created successfully

 

Example 2:In this example, we are demonstrating the use of exist_ok parameter.

# Importing Path from pathlib 
from pathlib import Path

# Forming a directory structure required as a path
path = Path("C:/PythonDemo/NestedDemo/demoprograms")

# Using mkdir to create a directory structure and create the last path component if they are not existing
path.mkdir(exist_ok=True)
print("Directory structure created successfully")

Output

Directory structure created successfully

 

Method-2: Using os.makedirs()

In Python, os module provides functions to interact with the operating system. It is provided under Python’s standard utility modules. Hence, this module provides an efficient way of using operating system dependent functionalities.

The makedirs() method in Python is a recursive directory creation function like mkdir() but also makes all intermediate directory to contain the leaf directory. If intermediate directories are not present then mkdir() throws a FileNotFoundError exception. Whereas, makedirs create all the intermediate directories. to create a directory named path with the given numeric mode. However, this method will raise a FileExistsError exception if the directory to be created already exists.

If the parameter exist_ok is true, FileExistsError exceptions will be ignored but only if the last path component is not an existing non-directory file. Otherwise, it will raise a FileExistsError exception.

The syntax of makedirs() function is as shown below.

os.makedirs(name, mode, exist_ok=False)

 

Example 1:

# Importing os module
import os

# Forming a directory structure required as a path
path="C:/pydemo"

# Using makedirs to create a directory structure and create the last path component if they are not existing
os.makedirs(path, exist_ok=True)
print("Directory structure created successfully")

Output

Directory structure created successfully

 

Method-3: Using distutils.dir_util

The distutils.core module is the only module that needs to be installed to use the Distutils. The disutils.dir_util module provides functions for operating on directories and trees of directories.
The mkpath() function is used to create a directory and any missing parent directories. If the directory already exists then do nothing. However, if it is unable to create any directory structure on the way, it will raise DistutilsFileError. The syntax of mkpath is as shown below.

distutils.dir_util.mkpath(name,[mode, verbose=0])

If verbose is true, then it will print a one-line summary of each mkdir to stdout. This function will return the list of directories actually created.

Example 1: In this example, we are providing the absolute path of the directory as a name without any other arguments.

# Importing distuitils dir_util module
import distutils.dir_util

# Forming a directory structure required as a path and creating nested directory
# Using mkpath() function and printing
distutils.dir_util.mkpath("C:/PythonDemo/NestedDemo")
print("Directory structure created successfully")

Output

Directory structure created successfully

 

Example 2: In this example, we are providing the absolute path of the directory and verbose=1. Here, if there is an existing directory structure, it will return an empty list. However, if the given directory structure is created with the mkpath then it will return the path of structure that has been created as a single entry in the list.

# Importing distuitils dir_util module
import distutils.dir_util

# Forming a directory structure required as a path and creating a nested directory
# Using mkpath() function and printing
distutils.dir_util.mkpath("C:/PythonDemo/NestedDemo", verbose=1)
print("Directory structure created successfully")

Output

Directory structure created successfully
C:/PythonDemo/NestedDemo']

 

Summary

The knowledge of creating nested directories is very important if we are performing any file operations in real time applications. While implementing any real time systems, many times we will need to store the result in the specific file structure whose naming is decided runtime, so we may need to create a nested directories structure to store that. In this tutorial, we covered the three different ways to create a nested directories with an example. All in all, this tutorial, covers everything that you need to know in order to create a nested directories in Python.

 

References

Pathlib Module
OS Module
distutils Module

 

Deepak Prasad

Deepak Prasad

He is the founder of GoLinuxCloud and brings over a decade of expertise in Linux, Python, Go, Laravel, DevOps, Kubernetes, Git, Shell scripting, OpenShift, AWS, Networking, and Security. With extensive experience, he excels in various domains, from development to DevOps, Networking, and Security, ensuring robust and efficient solutions for diverse projects. You can connect with him on his LinkedIn profile.

Can't find what you're searching for? Let us assist you.

Enter your query below, and we'll provide instant results tailored to your needs.

If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.

Buy GoLinuxCloud a Coffee

For any other feedbacks or questions you can send mail to admin@golinuxcloud.com

Thank You for your support!!

Leave a Comment