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

如何使用Python查找修改时间超过1分钟的文件

Python原生代码查找修改时间超过1分钟的文件

没问题!我来帮你完善这段Python原生代码,用更高效的方式实现查找修改时间超过1分钟的文件需求,完全不用依赖subprocess调用Linux命令。

首先先理清楚几个关键逻辑:

  • 我们需要计算1分钟前的时间戳,原代码里的now + 1逻辑是反的,应该用当前时间减去60秒
  • 使用os.scandir返回的DirEntry对象可以直接调用stat(),比手动拼接路径再调用os.stat更高效,因为它会缓存文件元数据

完整实现代码

import os
import time

def find_old_files(target_dir):
    # 获取当前时间戳,减去60秒得到1分钟前的时间点
    one_minute_ago = time.time() - 60
    
    with os.scandir(target_dir) as entries:
        for entry in entries:
            # 跳过目录,只处理文件(如果需要包含目录可以去掉这个判断)
            if entry.is_file(follow_symlinks=False):
                # 获取文件的修改时间戳
                mtime = entry.stat().st_mtime
                # 判断修改时间是否早于1分钟前
                if mtime < one_minute_ago:
                    print(f"找到超过1分钟未修改的文件: {entry.path}")
                    # 这里可以添加你需要的操作,比如收集路径、删除文件等

# 调用示例,替换成你要检查的目录
find_old_files("/path/to/your/directory")

代码说明

  • time.time()返回当前时间的 Unix 时间戳(秒级),减去60就得到了1分钟前的时间点
  • entry.is_file(follow_symlinks=False)用来过滤掉目录和符号链接,如果你需要包含目录,直接去掉这个判断即可
  • entry.path直接返回文件的完整路径,不需要手动用os.path.join拼接,更简洁高效

扩展:递归查找子目录中的文件

如果需要递归遍历所有子目录查找符合条件的文件,可以稍微修改代码,加上递归逻辑:

import os
import time

def find_old_files_recursive(target_dir):
    one_minute_ago = time.time() - 60
    
    with os.scandir(target_dir) as entries:
        for entry in entries:
            if entry.is_dir(follow_symlinks=False):
                # 递归处理子目录
                find_old_files_recursive(entry.path)
            elif entry.is_file(follow_symlinks=False):
                mtime = entry.stat().st_mtime
                if mtime < one_minute_ago:
                    print(f"找到超过1分钟未修改的文件: {entry.path}")

# 调用示例
find_old_files_recursive("/path/to/your/directory")

这样就完全用Python原生代码实现了需求,比调用subprocess更跨平台,也更容易维护和扩展。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 06:22:45