如何使用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
相关产品推荐
相关产品推荐

