pathlib and shutilPython lets you delete individual files with Path.unlink() (or os.remove()), empty folders with Path.rmdir(), and non-empty directory trees with shutil.rmtree(). Because deletions bypass the system Trash or Recycle Bin, verifying paths before deleting is critical.
Python 3.8+ added missing_ok=True to Path.unlink(), which eliminates boilerplate if os.path.exists(...) race conditions when cleaning temporary files.
Use Path.unlink(missing_ok=True) for single files and Path.rmdir() for folders that are already empty.
from pathlib import Path
temp_file = Path("temp_cache.txt")
temp_file.write_text("temporary data", encoding="utf-8")
# Safe deletion: does not crash if file was already removed
temp_file.unlink(missing_ok=True)
print("Exists after unlink:", temp_file.exists())
shutil.rmtree()Path.rmdir() raises OSError if the folder contains any files. When you genuinely need to delete an entire build or temp folder recursively, use shutil.rmtree(target_dir) after validating the path is inside an expected workspace.
shutil.rmtree() an unvalidated variable: If build_dir resolves to "" or "/" by mistake, recursive deletion can wipe critical directories.os.remove() on a folder: os.remove() and Path.unlink() only delete files (or symlinks); folders require rmdir() or shutil.rmtree().exists() then calling remove(): Another process could delete the file between those two lines; use unlink(missing_ok=True) or catch FileNotFoundError.Path.unlink() move deleted files to the Recycle Bin?No. unlink() and os.remove() permanently unlink the file from the filesystem. Use the third-party send2trash package if you need Trash integration.
.tmp files in a folder?Loop over for p in Path("cache").glob("*.tmp"): p.unlink(missing_ok=True).
Windows locks open files and raises PermissionError (WinError 32) until the other handle closes.
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.
You've completed this section! Take a quick 5-question quiz to check your understanding.