Python - 删除旧文件

11

我对Python比较新,一直在努力自学,但现在只有一些零散的知识。基本上,我正在寻找一个脚本,可以递归搜索目录及其子目录,并删除至少24小时旧的文件,但不会更改目录。

非常感谢您提供任何建议或示例。


2
你目前尝试了什么,有什么错误? - mmmmmm
让我们来看看这些零散的部分,也许我们可以帮助将它们粘合在一起? - johnsyweb
1
你不能删除目录中的文件而不改变目录。 - Tom Zych
2个回答

38

该代码使用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)

当我想删除旧文件并保存新文件时,即使它是一分钟前生成的,我该如何修改这个程序? - ak3191

7
如果您需要递归检查所有目录中的所有文件,可以采用以下类似的方法:
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)

当我想要删除旧文件并保存新文件时,我该如何修改它,如果新文件是一分钟前生成的? - ak3191

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接