Back to Python
2026-02-156 min read

Python - Renaming and Deleting Files

Learn Python - Renaming and Deleting Files step by step with clear examples and exercises.

Why This Matters

Learning how to manipulate files in Python is essential for many programming tasks, including data processing, web development, and automation scripts. Understanding file renaming and deletion techniques can help you manage your projects efficiently and avoid common pitfalls when working with files. Whether you are a beginner or an experienced programmer, mastering these skills will prove valuable in your Python journey.

Prerequisites

Before diving into renaming and deleting files, it is essential to have a basic understanding of:

  1. Python syntax and variables
  2. Basic file I/O operations (opening, reading, and writing files)
  3. Directory manipulation (listing, creating, and removing directories)
  4. Exception handling in Python

Core Concept

Python provides several built-in functions to rename and delete files. Let's explore these functions one by one and provide more examples for a deeper understanding.

Renaming Files

To rename a file in Python, you can use the os module's rename() function. Here's an example:

import os

source_file = "old_filename.txt"
destination_file = "new_filename.txt"

Renaming the file

os.rename(source_file, destination_file)

print("File has been renamed successfully.")


In this example, we first import the `os` module. Then, we define the source and destination files for renaming. The `os.rename()` function takes care of renaming the file from the source to the destination specified.

#### Example: Renaming multiple files in a directory

To rename multiple files within a directory, you can use a loop and list comprehension with `os.rename()`. Here's an example:

import os

directory = "." # Current directory

files_to_rename = ["old_filename1.txt", "old_filename2.txt"]

for file in files_to_rename:

destination_file = file.replace("old", "new")

source_file = os.path.join(directory, file)

destination_file = os.path.join(directory, destination_file)

os.rename(source_file, destination_file)

print("Files have been renamed successfully.")


In this example, we define a list of files to be renamed and loop through each one, replacing the old prefix with a new prefix using `replace()`. Then, we use `os.path.join()` to construct the full file paths for both the source and destination files. Finally, we use `os.rename()` to rename the files.

### Deleting Files

To delete a file in Python, you can use the `os` module's `remove()` function or the `os.path` module's `unlink()` function. Here's an example:

import os

file_to_delete = "filename_to_delete.txt"

Deleting the file using remove()

os.remove(file_to_delete)

print("File has been deleted successfully.")

Alternatively, you can use unlink() from os.path module

import os.path

os.path.unlink(file_to_delete)

print("File has been deleted successfully.")


In this example, we define the file to be deleted and use both `os.remove()` and `os.path.unlink()` functions to delete it. These functions will raise an error if the specified file does not exist.

#### Example: Deleting files recursively in a directory

To delete all files within a directory and its subdirectories, you can use the `shutil` module's `rmtree()` function combined with `os.listdir()`. Here's an example:

import os

import shutil

directory = "." # Current directory

for root, dirs, files in os.walk(directory):

for file in files:

file_path = os.path.join(root, file)

os.remove(file_path)

print("All files have been deleted successfully.")


In this example, we use `os.walk()` to iterate through all subdirectories and files within the specified directory. For each file found, we construct its full path using `os.path.join()`. Then, we use `os.remove()` to delete the file.

Worked Example

Let's create a simple Python script that renames multiple files in the current directory, deletes another file, and demonstrates handling exceptions when files do not exist:

import os

Renaming multiple files

files_to_rename = ["old_filename1.txt", "old_filename2.txt"]

for file in files_to_rename:

destination_file = file.replace("old", "new")

source_file = os.path.join(os.getcwd(), file)

destination_file = os.path.join(os.getcwd(), destination_file)

os.rename(source_file, destination_file)

print("Files have been renamed successfully.")

Deleting a file

file_to_delete = "filename_to_delete.txt"

try:

os.remove(file_to_delete)

print("File has been deleted successfully.")

except FileNotFoundError:

print(f"The file to delete {file_to_delete} does not exist.")


In this example, we define a list of files to be renamed and loop through each one, replacing the old prefix with a new prefix using `replace()`. Then, we use `os.path.join()` to construct the full file paths for both the source and destination files. We also include exception handling for when the specified file does not exist.

Common Mistakes

  1. Not handling exceptions: When trying to rename or delete a file that doesn't exist, the script will raise an error if no exception is handled. Always include try-except blocks to handle these cases gracefully.
  2. Using incorrect function for renaming or deleting files: Make sure you use os.rename() for renaming and either os.remove() or os.path.unlink() for deleting files.
  3. Not specifying the full file path: If your script is not in the same directory as the files being operated on, make sure to include the full file path (including the directory) when renaming and deleting files.
  4. Renaming or deleting a file that is open in another process or application: You cannot rename or delete a file that is being used by another process or application. Make sure to close any open files before renaming or deleting them.
  5. Not checking if the destination file already exists before renaming: If the destination file already exists, you will receive an error when trying to rename the source file. Always check if the destination file does not exist before renaming it.

Practice Questions

  1. Write a Python script that renames all .txt files in the current directory to have an underscore prefix (e.g., file.txt becomes _file.txt).
  2. Write a Python script that deletes all empty files in the current directory and its subdirectories.
  3. Write a Python script that renames all .pyc files to .bak in the current directory, but only if there is a corresponding .py file with the same base name (e.g., file.pyc becomes file.bak, but example_module.pyc remains unchanged).
  4. Write a Python script that renames all files in the current directory whose names contain "old" to have "new" as the first part of their name (e.g., old_filename.txt becomes new_filename.txt).
  5. Write a Python script that deletes all .log files in the current directory and its subdirectories that are older than 7 days.

FAQ

  1. What happens when I try to rename or delete a directory using os.rename() and os.remove()? These functions are designed for files, not directories. To manipulate directories, use the shutil module's functions like move(), copy2(), and rmtree().
  2. Can I rename or delete a file that is open in another process or application? No, you cannot rename or delete a file that is being used by another process or application. You will receive a permission error when attempting to do so. Make sure to close any open files before renaming or deleting them.
  3. What if I want to rename multiple files in a directory at once? To rename multiple files, you can use a loop and list comprehension with os.rename(). Here's an example:
import os

files = ["old_filename1.txt", "old_filename2.txt"]
for file in files:
destination_file = file.replace("old", "new")
os.rename(file, destination_file)
print("Files have been renamed successfully.")

In this example, we define a list of files to be renamed and loop through each one, replacing the old prefix with a new prefix using replace(). Then, we use os.rename() to rename the files.

  1. What if I want to check if a file exists before renaming or deleting it? To check if a file exists before performing an operation on it, you can use the built-in os.path.isfile() function:
import os

file_to_check = "filename.txt"
if os.path.isfile(file_to_check):

Perform renaming or deletion here

else:

print("The specified file does not exist.")


In this example, we use `os.path.isfile()` to check if the specified file exists before performing any operation on it.
Python - Renaming and Deleting Files | Python | XQA Learn