如何使用Python筛选目录中近24小时创建的文件列表
筛选过去24小时创建的文件的Python实现
嗨,我来帮你搞定这个问题!要从海量文件里筛选出过去24小时创建的,核心就是先算出24小时前的时间节点,再逐个检查文件的创建时间是否在这个节点之后。下面我给你两种实用的实现方案,你可以根据自己的习惯选:
方法一:使用os模块(兼容Python2/3)
这是比较传统的写法,适合习惯用os模块的同学:
import os import time # 计算24小时前的时间戳(单位:秒) one_day_ago = time.time() - 24 * 3600 # 替换成你的目标目录和输出文件路径 target_directory = "/your/target/directory" output_file_path = "recent_files.txt" with open(output_file_path, "w") as output_file: # 遍历目标目录及其子目录 for root, _, files in os.walk(target_directory): for filename in files: full_file_path = os.path.join(root, filename) # 处理不同系统的创建时间差异: try: # Unix/macOS系统用st_birthtime获取真正的创建时间 create_time = os.stat(full_file_path).st_birthtime except AttributeError: # Windows系统用getctime获取创建时间 create_time = os.path.getctime(full_file_path) # 判断文件是否在过去24小时内创建 if create_time >= one_day_ago: output_file.write(f"{full_file_path}\n")
方法二:使用pathlib(Python3.4+推荐)
pathlib是Python3.4以后推出的更简洁的路径处理模块,代码可读性更高:
from pathlib import Path import time # 计算24小时前的时间戳 one_day_ago = time.time() - 24 * 3600 # 用Path对象管理路径 target_dir = Path("/your/target/directory") output_file = Path("recent_files.txt") with open(output_file, "w") as f: # 遍历所有文件(包括子目录) for file_path in target_dir.rglob("*"): if file_path.is_file(): try: # Unix/macOS获取创建时间 create_time = file_path.stat().st_birthtime except AttributeError: # Windows获取创建时间 create_time = file_path.stat().st_ctime if create_time >= one_day_ago: f.write(f"{file_path}\n")
几个重要提醒
- 时间字段差异:如果你的需求是筛选最后修改时间而不是创建时间,可以把代码里的
st_birthtime/st_ctime换成st_mtime,这个字段在所有系统上都是指最后修改时间,兼容性更好。 - 性能优化:如果目录超级大,遍历可能需要一点时间,但比起输出所有几百万条文件,只写入符合条件的文件会快很多,也能大大减少输出文件的大小。
- 路径替换:记得把代码里的
/your/target/directory替换成你实际要处理的目录路径哦!
内容的提问来源于stack exchange,提问作者grahamie
相关产品推荐
相关产品推荐

