Cleaner empty dir cleanup
This commit is contained in:
@@ -143,34 +143,22 @@ class Plugin(object):
|
||||
def deleteEmptyFolder(self, folder, show_error = True, only_clean = None):
|
||||
folder = sp(folder)
|
||||
|
||||
allowed_dirs = []
|
||||
if only_clean:
|
||||
for item in os.listdir(folder):
|
||||
full_path = os.path.join(folder, item)
|
||||
if item in only_clean and os.path.isdir(full_path):
|
||||
allowed_dirs.append(full_path)
|
||||
for item in os.listdir(folder):
|
||||
full_folder = os.path.join(folder, item)
|
||||
|
||||
for root, dirs, files in os.walk(folder):
|
||||
if not only_clean or (item in only_clean and os.path.isdir(full_folder)):
|
||||
|
||||
for dir_name in dirs:
|
||||
full_path = os.path.join(root, dir_name)
|
||||
for root, dirs, files in os.walk(full_folder):
|
||||
|
||||
if only_clean:
|
||||
allow = False
|
||||
for allowed_dir in allowed_dirs:
|
||||
if allowed_dir in full_path:
|
||||
allow = True
|
||||
break
|
||||
for dir_name in dirs:
|
||||
full_path = os.path.join(root, dir_name)
|
||||
|
||||
if not allow:
|
||||
continue
|
||||
|
||||
if len(os.listdir(full_path)) == 0:
|
||||
try:
|
||||
os.rmdir(full_path)
|
||||
except:
|
||||
if show_error:
|
||||
log.error('Couldn\'t remove empty directory %s: %s', (full_path, traceback.format_exc()))
|
||||
if len(os.listdir(full_path)) == 0:
|
||||
try:
|
||||
os.rmdir(full_path)
|
||||
except:
|
||||
if show_error:
|
||||
log.error('Couldn\'t remove empty directory %s: %s', (full_path, traceback.format_exc()))
|
||||
|
||||
try:
|
||||
os.rmdir(folder)
|
||||
|
||||
Reference in New Issue
Block a user