用python脚本删除文件夹

时间:2013-03-11 09:28:39

标签: python file directory

a = '/mnt/task/a'
b = '/mnt/task/b'

ab下,
有一些文件夹,名称为201212194546921-6ab-45654545d-5445c
如您所见,文件夹的名称由序列号和生成文件夹的日期组成 如果我想删除在某个时间点之前生成的文件夹,我该如何查找和删除它们 例如删除上周之前的文件夹

这里的任何人都可以帮我吗?

2 个答案:

答案 0 :(得分:0)

有几个python模块可以帮助你这样做: os.walk(path)遍历给定路径上的所有文件夹 os.path.getctime(fileName)返回文件的创建日期。 shutil.rmtree(folder)删除文件夹及其内容

如果你把它们放在一起,你会得到这样的东西:

import os
import time
import shutil

for folder ,subFolder, filenames in os.walk('/mnt/task/a'):
    print folder , time.ctime( os.path.getctime(folder) )

    if os.path.getctime(folder) < (time.time() - 60*60*24*7):  
        print 'deleting: ' , folder
        #shutil.rmtree(folder)  
        while subFolder:
            subFolder.pop()

注意此代码仅根据文件创建时间删除文件夹!! 除文件日期外,您可能还需要更多逻辑。

答案 1 :(得分:0)

假设您要删除的文件夹直接位于ab
以下代码为每个文件夹创建一个日期时间对象,然后使用日期之间的差异来确定要删除的文件夹。

import os, datetime, errno, stat, shutil
a = 
b = 

date = ''
ref = datetime.date(2013,12,20)

def parse_name(fname):
    '''Returns False when unsucessful, datatime.date() when successful'''
    if len(fname) > 9:
        try:
            year = int(fname[:4])
            month = int(fname[4:6])
            day = int(fname[6:8])
            return datetime.date(year, month, day)
        except ValueError,e:
            return False
    else:
        return False

f2remove = []
for dirc in (a,b):
    for item in os.listdir(dirc):
        if os.path.isdir(os.path.join(dirc,item)):
            x = parse_name(item)
            if x and (ref - x).days >= 0:
                f2remove.append(os.path.join(dirc,item))

# --- deleting files --- #
for filename in f2remove:
    print 'removing', filename.split('\\')[-1]
    shutil.rmtree(filename)