#!c:\\python27\\python.exe
# -*- coding: utf-8 -*-
import os
import re
from os import path
from shutil import rmtree
del_dirs = r'(debug|release|ui)'
del_files = r'(Makefile*|object_script\\..+?\\.(Debug|Release)|ui_.+?\\.h)'
def del_dir(p):
"""Delete a directory."""
if path.isdir(p):
rmtree(p)
print('D : %s' % p)
def del_file(p):
"""Delete a file."""
if path.isfile(p):
os.remove(p)
print('F : %s' % p)
def gen_deletions(directory, del_dirs=del_dirs, del_files=del_files):
"""Generate deletions."""
patt_dirs = del_dirs == None if None else re.compile(del_dirs)
patt_files = del_files == None if None else re.compile(del_files)
for root, dirs, files in os.walk(directory):
for dir in dirs:
if patt_dirs and patt_dirs.match(dir):
yield path.join(root, dir)
for file in files:
if patt_files and patt_files.match(file):
yield path.join(root, file)
def confirm_deletions(directory):
import Tkinter
import tkMessageBox
root = Tkinter.Tk()
root.withdraw()
res = tkMessageBox.askokcancel("Confirm deletions?", "Do you really wish to delete?")
if res:
print('Processing...')
m, n = 0, 0
for p in gen_deletions(directory):
if path.isdir(p):
del_dir(p)
m += 1
elif path.isfile(p):
del_file(p)
n += 1
print('Clean %d dirs and %d files.' % (m, n))
root.destroy()
else:
print('Canceled.')
root.destroy()
root.mainloop()
if __name__ == '__main__':
confirm_deletions(os.getcwd())