Skip to main content

Operations with Folders and Directories

Operations with Folders and Directories

Directories are a critical part of file management and play a crucial role in developing comprehensive programs in Python.

OS Module

The os module in Python provides a way of using operating system dependent functionality. It helps in performing various operations such as creating directories, deleting files, changing the current working directory, etc.

To use the OS module, first, we need to import it using the import os statement. Here are two examples of how to use the OS module:

Example 1: Create a New Directory

To make a directory using the OS module, we can use the os.mkdir() function. Here's an example:

import os

# specify the path where you want to create the directory
path = "/home/user/newdir"

# create the directory
try:
    os.mkdir(path)
    print("Directory created successfully!")
except OSError as error:
    print(error)

Example 2: Get the Current Working Directory

To get the current working directory using the os module in Python, we can use the os.getcwd() function. Here's an example:

import os

# get the current working directory
cwd = os.getcwd()

# print the current working directory
print("Current working directory:", cwd)

By using the os module, we can perform various operations related to the operating system, including file operations, directory operations, and process management.

How to Get List of Files in Directory

To get a list of files in a directory, you can use the os.listdir() function. This function returns a list of all the files and directories in the specified directory.

import os

# get list of files in the current directory
files = os.listdir()

# print the list of files
print(files)

### Output
# ['file1.txt', 'file2.jpg', 'directory1', 'directory2']
import os

# get list of files in a directory
directory = "/path/to/directory"
files = os.listdir(directory)

# print the list of files
print(files)
### Output

# ['file1.pdf', 'file2.docx', 'file3.txt']

In summary, by using os.listdir() you can easily get a list of files in a directory. This can be useful for various tasks such as file manipulation, data analysis, and more.

How to Get Current Directory

To get the current directory, you can use the os module. The os.getcwd() method returns the current working directory as a string.

import os

### Get current directory

current_directory = os.getcwd()

### Print current directory

print(current_directory)

You can also use the pathlib module to get the current directory:

from pathlib import Path

### Get current directory

current_directory = Path.cwd()

### Print current directory

print(current_directory)

To change the current directory, you can use the os.chdir() method:

import os

### Change current directory

os.chdir('/path/to/new/directory')

### Get current directory

current_directory = os.getcwd()

### Print current directory

print(current_directory)

Remember to import the required module for changing directories before you try to change the current working directory.

Import from Another Directory

To import modules from another directory, you can use the following code:

import sys
sys.path.insert(0, '../path/to/parent/directory')

from module_name import function_name

In the above example, we first insert the path to the parent directory into the system path using sys.path.insert. Next, we can import the required module or function from the specified directory using the from keyword.

Another way to import modules from a parent directory is to use the __init__.py file. This file is a special file that is executed when the directory is imported as a module. In this file, you can add the following code:

import os
import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../")

from module_name import function_name

In this approach, we first import the os module to access the file path and directory information. Next, we add the parent directory to the system path using sys.path.append. Finally, we can import the required module or function from the parent directory using the from keyword.

By using these methods, you can easily import modules from a parent directory and streamline your project's organization.

Check if Directory Exists

To check if a directory exists, you can use the os.path.exists() function. If the directory exists, it will return True, otherwise it will return False.

import os

if os.path.exists('/my/directory'):
    print('Directory exists')
else:
    print('Directory does not exist')

If you want to make the directory if it doesn't exist, you can use the os.makedirs() function. This will create the directory and any necessary parent directories.

import os

if not os.path.exists('/my/directory'):
    os.makedirs('/my/directory')

### Now you can use the directory for your operations

Make sure to replace /my/directory with the actual path of the directory you want to check or create.

Creating Directory in Python

To create a directory in Python, you can use the os module. You can also check whether the directory already exists or not before creating it using the os.path.exists() method. The os.makedirs() method creates a directory and all its parent directories if they do not exist.

import os

# Directory Path
path = "/example/directory"

# Check if directory already exists
if not os.path.exists(path):
    # Create directory
    os.makedirs(path)
    print("Directory created successfully")
else:
    print("Directory already exists")

The os.mkdir() method creates a directory only if it does not already exist. It raises an FileExistsError if the directory already exists.

import os

# Directory Path
path = "/example/directory"

try:
    # Create directory
    os.mkdir(path)
    print("Directory created successfully")
except FileExistsError:
    print("Directory already exists")

Using either of these methods, you can easily create a directory in Python and check if it already exists.

Copy File to Another Directory

Copying a file from one directory to another in Python is a common task. There are several ways to achieve this, but the easiest method is by using the shutil module, which provides a copy function to copy files.

Using shutil.copy() to copy a file from one directory to another

The copy function in the shutil module takes two arguments - the source file and the destination directory.

import shutil

src_file = '/home/user/filename.txt'
dst_dir = '/home/user/new_directory'

shutil.copy(src_file, dst_dir)

This will copy the file filename.txt from the directory /home/user to the directory /home/user/new_directory.

Using os.rename() to move a file from one directory to another in Python

Another method to copy a file from one directory to another in Python is by using the os.rename() function.

import os

src_file = '/home/user/filename.txt'
dst_dir = '/home/user/new_directory'

new_path = os.path.join(dst_dir, os.path.basename(src_file))
os.rename(src_file, new_path)

This will move the file filename.txt from the directory /home/user to the directory /home/user/new_directory.

In conclusion, the above two methods can be used to copy a file from one directory to another in Python with ease.

How to Delete Directory

To delete a directory in Python, we can use the os module which provides us with the necessary methods to remove files and directories. One way to delete all files in a directory is by iterating over all files and deleting them one by one. Another way is to simply remove the directory using the os.rmdir() method.

Delete all Files in a Directory

We can delete all files within a directory by iterating over each file and deleting it using the os.remove() method. Here's an example:

import os

dir_name = '/path/to/directory'

# iterate over each file and delete it
for file_name in os.listdir(dir_name):
    file_path = os.path.join(dir_name, file_name)
    if os.path.isfile(file_path):
        os.remove(file_path)

Removing the Directory

We can remove a directory using the os.rmdir() method. This method only works if the directory is empty - if there are any files within the directory, the method will raise an error. To remove a non-empty directory, we can use the shutil module's rmtree() method. Here's an example:

import os
import shutil

dir_name = '/path/to/directory'

# remove the directory
try:
    os.rmdir(dir_name)
except OSError:
    shutil.rmtree(dir_name)

With the above code examples, you can now easily delete all files in a directory and remove the directory itself using Python.

Read all Files in a Directory

If you want to read all files in a directory using Python, you can use the os module. Here are two examples of how to accomplish this task:

import os

### Method 1

files = os.listdir('/path/to/directory')
for filename in files:
    with open(filename, 'r') as f:
        ##### do something with the file
        pass


### Method 2

for dirpath, dirnames, filenames in os.walk('/path/to/directory'):
    for filename in filenames:
        with open(os.path.join(dirpath, filename), 'r') as f:
            ##### do something with the file
            pass

In Method 1, the os.listdir() function returns a list of all the filenames in the directory. You can then use a for loop to iterate through the list and open each file.

In Method 2, the os.walk() function iterates through the directory tree, returning a 3-tuple of (dirpath, dirnames, filenames) for each directory it finds. You can then use nested for loops to iterate through all the filenames and open each file.

In both cases, you may need to adjust the path /path/to/directory to match the actual location of the directory you want to read.

How to Import from Parent Directory

To import a module from a parent directory in Python, you need to add the parent directory to your system's sys.path list. This can be done using the sys.path.append() function.

  1. If your working directory is a child directory of the parent directory, you can add the parent directory to the path like this:
import sys
sys.path.append('..')

# from parent_module import parent_function
  1. If your working directory is not a child directory of the parent directory, you can add the full path of the parent directory to the path like this:
import sys
sys.path.append('/path/to/parent_directory')

# from parent_module import parent_function

Make sure to replace parent_module and parent_function with the name of your parent module and function.

By adding the parent directory to your system's sys.path list, you can import modules from the parent directory in your Python code.

Contribute with us!

Do not hesitate to contribute to Python tutorials on GitHub: create a fork, update content and issue a pull request.

Profile picture for user AliaksandrSumich
Python engineer, expert in third-party web services integration.
Updated: 02/29/2024 - 22:11
Profile picture for user angarsky
Reviewed and approved