To remove a non-empty folder in Python, you can use the
shutil module, which provides functions for copying and removing files and directories.
ATTENTION! This guide shows you how to permanently delete the files and directories. Make sure you’ve crafted the file paths so that you’re 100% sure to delete the directories you want to delete.
To remove a directory and all its contents, including any subdirectories and files, you can use the
import shutil # Replace with the path to the directory you want to remove directory = '/path/to/directory' shutil.rmtree(directory)
This will remove the directory and all its contents, including any subdirectories and files. Notice that this approach does not delete read-only files! Instead, you’re going to see an error.
Let’s have a look at some alternative approaches to deleting non-empty folders with Python.
1. The ‘os.walk’ Function
To remove a non-empty folder in Python, you can delete the files individually using the
Here’s what it looks like in the code:
import os # Replace with the path to the directory you want to remove directory = '/path/to/directory' # Use os.walk to traverse the directory tree for root, dirs, files in os.walk(directory): # For each file in the directory for file in files: # Construct the full path to the file file_path = os.path.join(root, file) # Delete the file os.remove(file_path) # For each subdirectory in the directory for dir in dirs: # Construct the full path to the subdirectory dir_path = os.path.join(root, dir) # Delete the subdirectory os.rmdir(dir_path) # Delete the top-level directory os.rmdir(directory)
This code uses the
os.walk function to traverse the directory tree and delete each file and subdirectory within the specified directory. Once all the files and subdirectories have been deleted, the top-level directory is also deleted.
2. pathlib Module
To remove a non-empty folder in Python using the
pathlib module, you can use the following code:
import pathlib # A recursive function to remove the folder def del_folder(path): for sub in path.iterdir(): if sub.is_dir(): # Delete directory if it's a subdirectory del_folder(sub) else : # Delete file if it is a file: sub.unlink() # This removes the top-level folder: path.rmdir() # Example use del_folder(pathlib.Path('path/to/folder'))
This code uses the
iterdir method to traverse the directory tree and delete each file and subdirectory within the specified directory. Once all the files and subdirectories have been deleted, the top-level directory is also deleted.
Thanks for reading. Happy coding!
About the Author
- I'm an entrepreneur and a blogger from Finland. My goal is to make coding and tech easier for you with comprehensive guides and reviews.
- Artificial Intelligence2023.05.16Humata AI Review (2023): Best PDF Analyzer (to Understand Files)
- Python2023.05.139 Tips to Use ChatGPT to Write Code (in 2023)
- Artificial Intelligence2023.04.1114 Best AI Website Builders of 2023 (Free & Paid Solutions)