Python Working with Directories – Create, List & Manage Directories

Introduction

In Python, files are usually stored inside folders, which are also known as directories. When developing real-world applications, you often need to create directories, navigate between folders, list files, rename directories, and remove directories. These operations help organize data and manage project files efficiently.

Python provides powerful built-in modules such as os and pathlib for working with directories. These modules allow developers to interact with the file system without manually performing operations through the operating system interface.

What is Python Working with Directories?

Python Working with Directories refers to the process of creating, accessing, navigating, modifying, and deleting folders using Python code.

A directory is a location on a storage device that contains files and other directories.

Example Directory Structure:


Project/
│
├── main.py
├── data.csv
│
└── Reports/
    ├── report1.txt
    └── report2.txt

Python allows developers to:

  • Get the current directory
  • Change directories
  • Create directories
  • Remove directories
  • Rename directories
  • List files and folders
  • Check if directories exist

Importing the os Module

The os module is commonly used for directory operations.


import os

The os module provides access to operating system functionality.

Getting the Current Working Directory

The current working directory is the folder where the Python program is currently running.

Syntax


os.getcwd()

Example:


import os
print(os.getcwd())

Output:

/home/user/project

This helps identify the current location in the file system.

Changing the Current Directory

Use os.chdir() to move to another directory.

Syntax


os.chdir("directory_path")

Example:


import os
os.chdir("Documents")
print(os.getcwd())

Output:

/home/user/Documents

The program now works inside the new directory.

Listing Files and Directories

The os.listdir() function displays all files and folders inside a directory.

Syntax


os.listdir()

Example:


import os
print(os.listdir())

Output:

[ ‘main.py’, ‘data.csv’, ‘Reports’ ]

This is useful when exploring directory contents.

Creating a Directory

The os.mkdir() function creates a new folder.

Syntax


os.mkdir("folder_name")

Example:


import os
os.mkdir("Projects")

Output:

Directory created successfully

A new folder named Projects is created.

Creating Nested Directories

Use os.makedirs() to create multiple directories at once.

Example:


import os
os.makedirs("Projects/Python/Tutorials")

Output:

Nested directories created

Directory Structure:


Projects
└── Python
    └── Tutorials

Checking if a Directory Exists

Before creating or deleting folders, it is useful to check whether they exist.

Example:


import os
if os.path.exists("Projects"):
    print("Directory exists")

Output:

Directory exists

Renaming a Directory

Use os.rename() to rename a folder.

Syntax


os.rename(
    "old_name",
    "new_name"
)

Example:


import os
os.rename(
    "Projects",
    "MyProjects"
)

Output:

Directory renamed

Removing an Empty Directory

The os.rmdir() function deletes an empty folder.

Example:


import os
os.rmdir("MyProjects")

Output:

Directory deleted

Important:The directory must be empty.

Removing Nested Empty Directories

Use os.removedirs() for nested folders.

Example:


import os
os.removedirs(
    "Projects/Python/Tutorials"
)

Output:

Nested directories deleted

All empty directories in the path are removed.

Working with pathlib Module

Python’s pathlib module provides a modern way to work with directories.

Example:


from pathlib import Path
path = Path.cwd()
print(path)

Output:

/home/user/project

pathlib is often preferred because it is more readable and object-oriented.

Listing Directory Contents with pathlib

Example:


from pathlib import Path
path = Path(".")
for item in path.iterdir():
    print(item)

Output:

main.py
data.csv
Reports

Example

The following example creates a directory and displays its contents.


import os
os.mkdir("Demo")
print(os.listdir())

Output:

[ ‘main.py’, ‘Demo’ ]

This demonstrates basic directory creation and listing.

Real-life Example

Imagine you are developing a report generation application.

Each month, a new folder is created automatically to store reports.


import os
month = "January_Reports"
if not os.path.exists(month):
    os.mkdir(month)
print("Folder created")

Output:

Folder created

Directory Structure:


January_Reports/

Common Mistakes

1. Forgetting to Import os

Incorrect:


os.mkdir("Test")

Output:

NameError

Correct:


import os
os.mkdir("Test")

2. Creating an Existing Directory

Incorrect:


os.mkdir("Projects")

Output:

FileExistsError

Correct:


if not os.path.exists("Projects"):
    os.mkdir("Projects")

3. Deleting a Non-Empty Directory

Incorrect:


os.rmdir("Projects")

Output:

OSError

Correct:


Delete all files first or use appropriate directory removal methods.

4. Using Incorrect Paths

Incorrect:


os.chdir("Docs")

When the folder does not exist.

Correct:


if os.path.exists("Docs"):
    os.chdir("Docs")

5. Ignoring Exception Handling

Incorrect:


os.mkdir("Projects")

Correct:


try:
    os.mkdir("Projects")
except FileExistsError:
    print("Directory already exists")

Best Practices

1. Check Directory Existence


os.path.exists("Projects")

Prevents unnecessary errors.

2. Use pathlib for Modern Code


from pathlib import Path

Improves readability.

3. Handle Exceptions


try:
    pass
except:
    pass

Makes programs more robust.

4. Use Meaningful Directory Names

Examples:


Reports
Backups
Logs
Projects

5. Avoid Hard-Coded Paths

Prefer relative paths when possible.


Path("Reports")

Difference Between Common Directory Functions

Function Purpose
os.getcwd() Get current directory
os.chdir() Change directory
os.listdir() List directory contents
os.mkdir() Create a directory
os.makedirs()() Create nested directories
os.rename() Rename directory
os.rmdir() Remove empty directory
os.removedirs() Remove nested empty directories

Conclusion

Working with directories in Python is a vital skill for managing files and organizing data efficiently. Using modules such as os and pathlib, developers can create, navigate, rename, list, and delete directories with ease.

Directory management plays a major role in real-world applications, including file storage systems, backup solutions, report generation tools, and data-processing applications. By understanding functions like os.getcwd(), os.mkdir(), os.listdir(), and os.rmdir(), developers can effectively interact with the file system.

Related Python Tutorials