Skip to main content

How to Delete a File in Python

File management is a crucial aspect of code handling. Part of this skill set is knowing how to delete a file. In this tutorial, we cover multiple ways to delete a file in Python, along with best practices in doing so.
Feb 2024  · 5 min read

File management is a common coding task that is easily accomplished within a Python script. A key component in file management is deleting an unwanted file. Let’s discuss how to delete a file using Python.

When to Delete a File, and When Not To

Before learning how to delete a file using Python, let’s briefly discuss when you may want to delete a file at all.

File deletion may be part of routine, periodic maintenance to clear hard drive space and reduce bloat. But more often, file deletion may be an integral part of a coding project to prevent unnecessary clutter or confusion.

Your code may generate temporary files for caching or logging that are only useful for a short period and then need to be removed. You may generate duplicate files, either intentionally or through testing, that then need to be cleaned up.

In other cases, sensitive personal information may need to be deleted for security purposes.

However, you want to ensure that critical information is not lost and only unwanted files are deleted. It’s a good practice to keep a backup (or several) of important information that is updated regularly to avoid accidental loss.

A general rule of thumb that I follow is to keep a local copy, as well as a cloud copy, of any important information. However, there are situations where other backup arrangements are necessary, and you must always consider the security of your data as well. Whatever your situation, make sure only unwanted files are being deleted.

Using os.remove()

One of the most straightforward ways to delete a file in Python is by using the os module's remove() function. This method is concise and well-suited for simple file deletion tasks.

import os file_path = 'example.txt'

try: os.remove(file_path)
print(f"File '{file_path}' deleted successfully.")

except FileNotFoundError: print(f"File '{file_path}' not found.")

In this example, we attempt to remove the file specified by file_path. If the file is present and successfully deleted, a success message is printed. If the file is not found, it gracefully handles the FileNotFoundError and prints the “File 'example.txt' not found.” message.

However, remember that once a file is deleted, you often cannot retrieve it, so make sure you have checks in place so you do not accidentally delete a file you need. This is especially a concern with automated processes.

Key takeaway: For quick and one-off file deletion needs in data analysis, os.remove() is a handy tool.

Robust Handling With os.path.exists()

It's crucial to handle scenarios where the file might not exist. The previous example threw an error if the file did not exist, which is not always preferable. Using os.path.exists() before deletion, can prevent this.

import os file_path = 'example.txt'
if os.path.exists(file_path): os.remove(file_path)
print(f"File '{file_path}' deleted successfully.")
else: print(f"File '{file_path}' not found.")

By checking the existence of the file using os.path.exists(), you can prevent potential errors and enhance the script's reliability. This is particularly valuable when dealing with changing file paths in data analysis projects.

When file paths can change dynamically, it's a prudent practice to check a file’s existence before deletion to avoid errors and add an extra layer of safety to your scripts. You can learn more best practices like this in this Python expert guide.

Key takeaway: os.path.exists() allows you to check for a file’s existence before deletion.

Leveraging shutil for Deleting Directories

For more complex scenarios, especially when dealing with directories, the shutil module's rmtree() function provides an efficient solution. This method is handy when you need to delete an entire directory and its contents.

import shutil directory_path = 'example_directory'
try: shutil.rmtree(directory_path)
print(f"Directory '{directory_path}' and its contents deleted successfully.")
except FileNotFoundError: print(f"Directory '{directory_path}' not found.")

Key takeaway: When faced with tasks that involve deleting entire directories, shutil.rmtree() is versatile, efficient, and saves you from writing complex recursive deletion logic.

Safe Deletion with send2trash

If you want a safety net before permanently deleting a file, the send2trash library provides a convenient solution. It moves the file to the system's trash/recycle bin, allowing for easy recovery if necessary. However, this does add a second step to the deletion; at some point, you will need to empty your trash/recycle bin.

from send2trash import send2trash
file_path = 'example.txt' try: send2trash(file_path)
print(f"File '{file_path}' sent to trash successfully.")
except FileNotFoundError: print(f"File '{file_path}' not found.")

Key takeaway: send2trash provides a safety net before irrevocably deleting a file, but also adds an extra step.

Python Delete File Best Practices and Tips

When deleting a file using code, there are a few best practices to consider.

  1. Always ensure that you are deleting the correct file. If you are uncertain, adding a safety net like send2trash can be a wise decision.
  2. Check for the existence of the file or directory you’d like to delete before deleting it. This will prevent errors and security concerns.
  3. Always backup important files and information on a regular basis. You don’t want an accidental file deletion to result in major business problems.
  4. Test your file deletion code before deploying it. This is especially important for any automated processes. You don’t want to let an untested deletion code run amok.

For more, check out this tutorial on coding best practices you should implement.


Deleting unnecessary files or directories is a common coding task and good file management practice. But because deletion is often permanent, it is critical to do so with care.

Always consider the nature of your data analysis needs and the potential impact of file deletion on your workflow. Learn more about file management at DataCamp’s Data Management Concepts course. Consider the Data Scientist Career Track or the Python Programmer Career Track for more on how file management is useful for data projects.

Photo of Amberle McKee
Amberle McKee

I am a PhD with 13 years of experience working with data in a biological research environment. I create software in several programming languages including Python, MATLAB, and R. I am passionate about sharing my love of learning with the world.


Keep Learning Python! 


Python Fundamentals

15hrs hr
Grow your programmer skills. Discover how to manipulate dictionaries and DataFrames, visualize real-world data, and write your own Python functions.
See DetailsRight Arrow
Start Course
See MoreRight Arrow


How to Check if a File Exists in Python

Learn how to check if a file exists in Python in this simple tutorial
Adel Nehme's photo

Adel Nehme


How to Comment Out a Block of Code in Python

Using comments is fundamental for effectively working with Python. In this short tutorial, learn how to comment out a block of code in Python.
Adel Nehme's photo

Adel Nehme

3 min


Working with Modules in Python Tutorial

Modules enable you to split parts of your program in different files for easier maintenance and better performance.

Nishant Kumar

8 min


Working with Zip Files in Python

In this tutorial, you are going to learn how to work with Zip Files in Python using the zipfile module. zipfile is a Python built-in module.
Hafeezul Kareem Shaik's photo

Hafeezul Kareem Shaik

13 min


How to Exit Python: A Quick Tutorial

In this article, we cover the basics of what happens when you terminate Python, how to exit Python using different exit functions and keyboard shortcuts, as well as common issues and how to avoid them.
Amberle McKee's photo

Amberle McKee


Python Functions Tutorial

A tutorial on functions in Python that covers how to write functions, how to call them, and more!
Karlijn Willems's photo

Karlijn Willems

14 min

See MoreSee More