Python - 删除旧文件

11 投票
2 回答
21117 浏览
提问于 2025-04-17 00:27

我对Python还不是很熟悉,一直在尝试自己解决这个问题,但到目前为止只得到了一些零碎的信息。简单来说,我想要一个脚本,它可以递归地搜索一个文件夹及其子文件夹,删除那些至少有24小时历史的文件,但不改变文件夹本身的结构。任何建议或示例都非常感谢。

2 个回答

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)
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)

撰写回答