You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python脚本如何移动7天以上旧文件且保留指定数量最新文件

Python文件清理脚本修改方案

你可以通过Python列表切片特性实现跳过前N个最新文件的需求,修改方案如下:


修改后的完整代码

#!/usr/bin/python

import os
import re
import time
import shutil

# 定义需要保留的最新文件数量,可按需调整
KEEP_LATEST_COUNT = 5

now = time.time()
outputlist = []

regexp='sudoers\.(?!rpm).*'
regex = re.compile(regexp)
dir = '/etc'
filenames = os.listdir(dir)
for filename in filenames:
    abspath = os.path.join(dir, filename)
    if regex.findall(abspath):
       if os.path.isfile(abspath):
          if os.path.getctime(abspath) < now - 7 * 86400:
              print (abspath, os.path.getctime(abspath))
              outputlist.append(abspath)
# 按ctime倒序排列,最新的文件排在最前
outputlist.sort(key=os.path.getctime, reverse=True)
# 切片跳过前KEEP_LATEST_COUNT个文件,仅移动剩余文件
for xfiles in outputlist[KEEP_LATEST_COUNT:]:
    shutil.move(xfiles, '/opt/backup')

核心修改说明

  • 新增了常量KEEP_LATEST_COUNT,你可以根据实际保留需求调整该数值
  • 遍历文件列表时使用切片outputlist[KEEP_LATEST_COUNT:],自动跳过列表前N个最新的文件:当符合移动条件的文件总数小于等于保留数量时,切片会返回空列表,不会执行任何移动操作,无需额外做边界判断

额外注意事项

如果/opt/backup目录下存在同名文件,shutil.move会直接覆盖目标路径文件,如果你需要避免覆盖,可以在移动前判断目标路径是否存在,对要移动的文件做重命名处理。


内容的提问来源于stack exchange,提问作者danidar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:51:01