如何根据使用python修改的时间删除目录中的子目录?

时间:2018-07-15 13:05:26

标签: python delete-directory

基于此脚本:

 #!/usr/bin/python

# run by crontab
# removes any files in /tmp/ older than 7 days

import os, sys, time
from subprocess import call

now = time.time()
cutoff = now - (7 * 86400)

files = os.listdir("/tmp")
for xfile in files:
        if os.path.isfile( "/tmp/" + xfile ):
                t = os.stat( "/tmp/" + xfile )
                c = t.st_ctime

                # delete file if older than a week
                if c < cutoff:
                        os.remove("/tmp/" + xfile)

我们可以根据修改后的时间删除路径中的文件,但是如何根据修改后的时间删除其他文件夹中的文件夹?

这意味着主文件夹中有很多文件夹,但是我们需要保留主文件夹和子文件夹,并且仅删除其修改时间早于特定时间的文件夹。

1 个答案:

答案 0 :(得分:1)

您可以尝试以下方法

import shutil, os, time

top_dir = '/tmp'

now = time.time()
cutoff = now - (7 * 86400)

def del_old_files_and_dirs(top_dir, cutoff_time):
    for root, dirs, files in os.walk(top_dir, topdown=False):
        for cdir in dirs:
            fdir = os.path.join(root, cdir)
            if os.path.getmtime(fdir) < cutoff_time:
                shutil.rmtree(fdir)
            else:
                # Process this dir again recursively
                del_old_files_and_dirs(fdir, cutoff_time)
        for cfile in files:
            ffile = os.path.join(root, cfile)
            if os.path.getmtime(ffile) < cutoff_time:
                  os.remove(ffile)



del_old_files_and_dirs(top_dir, cutoff)