- #!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())
- #该片段来自于http://www.codesnippet.cn/detail/260920136163.html
来源: http://www.codesnippet.cn/detail/260920136163.html