Skip to content

Instantly share code, notes, and snippets.

@Dreded
Forked from jacobtomlinson/remove_empty_folders.py
Last active December 1, 2017 05:55
Show Gist options
  • Save Dreded/3d5811184a6c8ba6d36d0ffb7f7277e4 to your computer and use it in GitHub Desktop.
Save Dreded/3d5811184a6c8ba6d36d0ffb7f7277e4 to your computer and use it in GitHub Desktop.
Python Recursively Remove Empty Directories
#! /usr/bin/env python
'''
Module to remove empty folders recursively. Can be used as standalone script
or be imported into existing script.
'''
import os
import sys
def removeEmptyFolders(path, removeRoot=True):
'Function to remove empty folders'
if not os.path.isdir(path):
return
# remove empty subfolders
files = os.listdir(path)
if len(files):
for f in files:
fullpath = os.path.join(path, f)
if os.path.isdir(fullpath):
removeEmptyFolders(fullpath)
# if folder empty, delete it
files = os.listdir(path)
if len(files) == 0 and removeRoot:
print("Removing empty folder:", path)
os.rmdir(path)
def usageString():
'Return usage string to be output in error cases'
return 'Usage: %s directory [removeRoot]' % sys.argv[0]
if __name__ == "__main__":
removeRoot = True
if len(sys.argv) < 1:
print("Not enough arguments")
sys.exit(usageString())
if not os.path.isdir(sys.argv[1]):
print("No such directory %s" % sys.argv[1])
sys.exit(usageString())
if len(sys.argv) == 3 and sys.argv[2] != "False":
print("removeRoot must be 'False' or not set")
sys.exit(usageString())
else:
removeRoot = False
removeEmptyFolders(sys.argv[1], removeRoot)
@Dreded
Copy link
Author

Dreded commented Dec 1, 2017

Modified for Python 3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment