Of course! In Python, you can remove files using modules from the standard library. The most common and recommended way is to use the pathlib module (available in Python 3.4+), but the older os module method is also widely used.

Here’s a complete guide covering both methods, including important safety checks.
The Recommended Method: pathlib (Modern & Object-Oriented)
The pathlib module treats filesystem paths as proper Python objects, which makes the code cleaner and less error-prone.
Basic File Removal
You use the Path.unlink() method to remove a file.
from pathlib import Path
# Define the path to the file you want to delete
file_to_delete = Path("my_test_file.txt")
# Check if the file exists before trying to delete it
if file_to_delete.exists():
try:
file_to_delete.unlink()
print(f"File '{file_to_delete}' has been successfully deleted.")
except OSError as e:
print(f"Error: {file_to_delete} : {e.strerror}")
else:
print(f"Error: The file '{file_to_delete}' does not exist.")
Handling Directories
To remove a directory, you must use the Path.rmdir() method. This will only work on empty directories.

from pathlib import Path
# Define the path to the directory you want to delete
dir_to_delete = Path("my_empty_directory")
# Check if the directory exists and is empty
if dir_to_delete.exists() and not any(dir_to_delete.iterdir()):
try:
dir_to_delete.rmdir()
print(f"Directory '{dir_to_delete}' has been successfully deleted.")
except OSError as e:
print(f"Error: {dir_to_delete} : {e.strerror}")
else:
print(f"Error: The directory '{dir_to_delete}' does not exist or is not empty.")
To remove a directory and all its contents (files and subdirectories), you can use shutil.rmtree(), which we'll cover in the os section below.
The Classic Method: os & shutil
The os module provides a more direct, string-based interface to the operating system. You'll often see this in older codebases.
Basic File Removal with os.remove()
This function removes a file. If the path points to a directory, it will raise an IsADirectoryError.
import os
# Define the path to the file you want to delete
file_to_delete = "my_test_file.txt"
# Check if the file exists before trying to delete it
if os.path.exists(file_to_delete):
try:
os.remove(file_to_delete)
print(f"File '{file_to_delete}' has been successfully deleted.")
except OSError as e:
print(f"Error: {file_to_delete} : {e.strerror}")
else:
print(f"Error: The file '{file_to_delete}' does not exist.")
Removing Directories with os.rmdir() and shutil.rmtree()
-
os.rmdir(path): Deletes an empty directory. It will raise anOSErrorif the directory is not empty.
(图片来源网络,侵删)import os dir_to_delete = "my_empty_directory" if os.path.isdir(dir_to_delete) and not os.listdir(dir_to_delete): try: os.rmdir(dir_to_delete) print(f"Directory '{dir_to_delete}' has been successfully deleted.") except OSError as e: print(f"Error: {dir_to_delete} : {e.strerror}") else: print(f"Error: The directory '{dir_to_delete}' does not exist or is not empty.") -
shutil.rmtree(path): This is the function you need to delete a directory and all of its contents. It's powerful but destructive, so use it with caution.import shutil import os dir_to_delete = "my_directory_with_content" if os.path.isdir(dir_to_delete): try: shutil.rmtree(dir_to_delete) print(f"Directory '{dir_to_delete}' and all its contents have been successfully deleted.") except OSError as e: print(f"Error: {dir_to_delete} : {e.strerror}") else: print(f"Error: The directory '{dir_to_delete}' does not exist.")
Summary: Which One to Use?
| Task | Recommended Method (pathlib) |
Alternative Method (os / shutil) |
|---|---|---|
| Remove a single file | Path.unlink() |
os.remove() |
| Remove an empty directory | Path.rmdir() |
os.rmdir() |
| Remove a directory and all its contents | shutil.rmtree(path) (from shutil) |
shutil.rmtree(path) (from shutil) |
| Check if a path exists | Path.exists() |
os.path.exists() |
Recommendation: For any new Python code (3.4+), strongly prefer pathlib. It's more readable, less prone to errors with path separators (e.g., vs \), and its object-oriented approach is generally considered more Pythonic.
⚠️ Important Safety Tips
- ALWAYS Check for Existence: Never try to delete a file or directory without first checking if it exists. Your program will crash with a
FileNotFoundErrorif you don't. - Handle Permissions: Files and directories might be read-only or you might not have the necessary permissions. Always wrap your deletion logic in a
try...except OSErrorblock to gracefully handle these cases. - Be Careful with
shutil.rmtree(): This function is irreversible. Once you run it, the data is gone (unless you have a backup). Double-check the path before executing it, especially in scripts that run automatically. - Consider Using a "Trash" or "Recycle Bin": For applications where users might want to recover deleted files, simply deleting the file is not enough. You would need to move the file to the system's trash/recycle bin directory. Libraries like
send2trashcan help with this.
