欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python2.7删除文件夹和删除文件代码实例

程序员文章站 2022-06-06 18:58:51
复制代码 代码如下:#!c:\python27\python.exe# -*- coding: utf-8 -*- import osimport re from os...

复制代码 代码如下:

#!c:\python27\python.exe
# -*- coding: utf-8 -*-

import os
import re

from os import path
from shutil import rmtree

del_dirs = none
del_files = r'(.+?\.pyc$|.+?\.pyo$|.+?\.log$)'

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 = none if del_dirs == none else re.compile(del_dirs)
    patt_files = none if del_files == none else re.compile(del_files)

    for root, dirs, files in os.walk(directory):
        if patt_dirs:
            for d in dirs:
                if patt_dirs.match(d):
                    yield path.join(root, d)
        if patt_files:
            for f in files:
                 if patt_files.match(f):
                    yield path.join(root, f)

def confirm_deletions(directory):
    import tkinter
    import tkmessagebox

    root = tkinter.tk()
    root.withdraw()
    res = tkmessagebox.askokcancel("confirm deletions?",
        "do you really wish to delete?\n\n"
        "working directory:\n%s\n\n"
        "delete conditions:\n(d)%s\n(f)%s"
        % (directory, del_dirs, del_files))
    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__':
    import sys
    argv = sys.argv
    directory = argv[1] if len(argv) >= 2 else os.getcwd()
    confirm_deletions(directory)
    # import subprocess
    # subprocess.call("pause", shell=true)