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

15 hours 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
Certification available


Intermediate Python

4 hr
Level up your data science skills by creating visualizations using Matplotlib and manipulating DataFrames with pandas.
See MoreRight Arrow

Becoming Remarkable with Guy Kawasaki, Author and Chief Evangelist at Canva

Richie and Guy explore the concept of being remarkable, growth, grit and grace, the importance of experiential learning, imposter syndrome, finding your passion, how to network and find remarkable people, measuring success through benevolent impact and much more. 
Richie Cotton's photo

Richie Cotton

55 min

Python NaN: 4 Ways to Check for Missing Values in Python

Explore 4 ways to detect NaN values in Python, using NumPy and Pandas. Learn key differences between NaN and None to clean and analyze data efficiently.
Adel Nehme's photo

Adel Nehme

5 min

Seaborn Heatmaps: A Guide to Data Visualization

Learn how to create eye-catching Seaborn heatmaps
Joleen Bothma's photo

Joleen Bothma

9 min

Test-Driven Development in Python: A Beginner's Guide

Dive into test-driven development (TDD) with our comprehensive Python tutorial. Learn how to write robust tests before coding with practical examples.
Amina Edmunds's photo

Amina Edmunds

7 min

Exponents in Python: A Comprehensive Guide for Beginners

Master exponents in Python using various methods, from built-in functions to powerful libraries like NumPy, and leverage them in real-world scenarios to gain a deeper understanding.
Satyam Tripathi's photo

Satyam Tripathi

9 min

Python Linked Lists: Tutorial With Examples

Learn everything you need to know about linked lists: when to use them, their types, and implementation in Python.
Natassha Selvaraj's photo

Natassha Selvaraj

9 min

See MoreSee More