How to delete all files in a directory with Python?

We often need to remove all files from a directory in Python for tasks like cleaning temporary logs, resetting application data, or managing output directories. Python provides several built-in modules like os, pathlib, and shutil to accomplish this programmatically with better control and reliability than manual deletion.

In this article, we'll explore different approaches for deleting all files in a directory using Python.

Using os.listdir() and os.remove()

The os module provides platform-independent file system operations. We can use os.listdir() to list directory contents and os.remove() to delete individual files.

Example

Here's how to delete all files from a directory using the os module ?

import os

# Create some sample files for demonstration
folder_path = "sample_directory"
os.makedirs(folder_path, exist_ok=True)

# Create sample files
with open(os.path.join(folder_path, "file1.txt"), "w") as f:
    f.write("Sample content 1")
with open(os.path.join(folder_path, "file2.txt"), "w") as f:
    f.write("Sample content 2")

# Delete all files in the directory
for filename in os.listdir(folder_path):
    file_path = os.path.join(folder_path, filename)
    if os.path.isfile(file_path):
        os.remove(file_path)
        print(f"{filename} is removed")

# Clean up the directory
os.rmdir(folder_path)

The output shows which files were removed ?

file1.txt is removed
file2.txt is removed

Using pathlib Module

The pathlib module, introduced in Python 3.4, provides an object-oriented approach to file operations. It uses iterdir() to iterate through directory contents and unlink() to delete files.

Example

Here's the same operation using pathlib ?

from pathlib import Path

# Create sample directory and files
folder = Path("sample_directory")
folder.mkdir(exist_ok=True)

# Create sample files
(folder / "document.txt").write_text("Sample document")
(folder / "notes.txt").write_text("Sample notes")

# Delete all files in the directory
for file_path in folder.iterdir():
    if file_path.is_file():
        file_path.unlink()
        print(f"{file_path.name} is removed")

# Clean up the directory
folder.rmdir()

The output demonstrates successful file removal ?

document.txt is removed
notes.txt is removed

Using shutil for Complete Directory Cleanup

The shutil module is useful when you need to remove both files and subdirectories. It provides rmtree() for removing entire directory trees.

Example

Here's how to remove all contents including subdirectories ?

import shutil
import os

# Create sample directory structure
folder_path = "sample_directory"
os.makedirs(folder_path, exist_ok=True)
os.makedirs(os.path.join(folder_path, "subfolder"), exist_ok=True)

# Create sample files and subdirectory content
with open(os.path.join(folder_path, "main_file.txt"), "w") as f:
    f.write("Main file content")
with open(os.path.join(folder_path, "subfolder", "sub_file.txt"), "w") as f:
    f.write("Subfolder file content")

# Remove all contents (files and subdirectories)
for item_name in os.listdir(folder_path):
    item_path = os.path.join(folder_path, item_name)
    if os.path.isfile(item_path):
        os.remove(item_path)
        print(f"{item_name} file is removed")
    elif os.path.isdir(item_path):
        shutil.rmtree(item_path)
        print(f"{item_name} subdirectory is removed")

# Clean up the main directory
os.rmdir(folder_path)

The output shows both files and subdirectories being removed ?

main_file.txt file is removed
subfolder subdirectory is removed

Comparison of Methods

Method Best For Handles Subdirectories Python Version
os.listdir() + os.remove() Simple file deletion No All versions
pathlib Modern, readable code No (files only) 3.4+
shutil.rmtree() Complete directory cleanup Yes All versions

Safety Considerations

Important: Always validate file paths and permissions before executing deletion scripts in production environments. Consider implementing safety checks like ?

import os

def safe_delete_files(directory):
    if not os.path.exists(directory):
        print("Directory does not exist")
        return
    
    if not os.access(directory, os.W_OK):
        print("No write permission for directory")
        return
    
    for filename in os.listdir(directory):
        file_path = os.path.join(directory, filename)
        if os.path.isfile(file_path):
            os.remove(file_path)
            print(f"Safely removed: {filename}")

# Example usage (commented out for safety)
# safe_delete_files("path/to/directory")

Conclusion

Use os.listdir() with os.remove() for simple file deletion, pathlib for modern readable code, and shutil when you need to remove both files and subdirectories. Always implement safety checks when deleting files programmatically.

Updated on: 2026-03-24T18:26:37+05:30

32K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements