Python - 删除旧文件

时间:2011-08-27 20:36:59

标签: python

我对python有点新鲜,并且一直试图自己解决这个问题,但到目前为止只能获得点点滴滴。基本上我正在寻找一个脚本,它将递归搜索一个目录及其子目录并删除至少24小时但不改变目录的文件。 任何建议或例子都非常感谢。

2 个答案:

答案 0 :(得分:32)

这使用os.walk方法递归搜索目录。对于每个文件,它会使用os.path.getmtime检查修改日期,并将其与datetime.now(当前时间)进行比较。构造datetime.timedelta以创建24小时的时间值。

它会在调用脚本时搜索os.path.curdir目录,该目录是当前目录。您可以将dir_to_search设置为其他内容,例如脚本的参数。

import os
import datetime

dir_to_search = os.path.curdir
for dirpath, dirnames, filenames in os.walk(dir_to_search):
   for file in filenames:
      curpath = os.path.join(dirpath, file)
      file_modified = datetime.datetime.fromtimestamp(os.path.getmtime(curpath))
      if datetime.datetime.now() - file_modified > datetime.timedelta(hours=24):
          os.remove(curpath)

答案 1 :(得分:6)

如果你需要它以递归方式检查所有目录中的所有文件,那么应该这样做:

import os, time

path = "/path/to/folder"
def flushdir(dir):
    now = time.time()
    for f in os.listdir(dir):
        fullpath = os.path.join(dir, f)
        if os.stat(fullpath).st_mtime < (now - 86400):
            if os.path.isfile(fullpath):
                os.remove(fullpath)
            elif os.path.isdir(fullpath):
                flushdir(fullpath)

flushdir(path)