如何列出目录特定文件?三小时前日志匹配代码返回空列表问题
问题分析与解决方案
核心问题排查
你的代码返回空列表,大概率是时间格式字符串不匹配或者时区差异导致的,以下是具体修复思路:
1. 确认时间格式与日志文件名一致
你的目标日志文件名是Automation-05102023090000,对应结构是前缀-月(2位)日(2位)年(4位)小时(2位)分秒(4位),需检查:
- 如果日志文件名的日期是
月-日-年顺序,你当前的%m%d%Y%H格式是正确的; - 如果日志文件名的日期是
日-月-年顺序,需将格式改为Automation-%d%m%Y%H*。
2. 修复时区差异问题
datetime.datetime.now()获取的是本地系统时间,如果日志文件是用UTC时间生成的,会出现时间偏移。改用UTC时间计算即可:
time1 = datetime.datetime.utcnow() - datetime.timedelta(hours=3)
3. 简化代码(可选)
无需用os.walk遍历整个目录,用glob更高效直接:
import os import glob import datetime path = r'/usr/local/scripts/Automation/Logs' time1 = datetime.datetime.now() - datetime.timedelta(hours=3) sample = time1.strftime("Automation-%m%d%Y%H*") # 匹配指定路径下的目标文件 result = glob.glob(os.path.join(path, sample)) # 如需遍历子目录,添加recursive=True # result = glob.glob(os.path.join(path, '**', sample), recursive=True) print(result)
4. 验证匹配模板是否正确
在代码中先打印生成的sample值,确认是否和日志文件名前缀匹配:
print("当前匹配模板:", sample)
比如12点运行时,应输出Automation-0510202309*,若输出不符,说明时间格式或时区存在问题。
内容的提问来源于stack exchange,提问作者marina
相关产品推荐
相关产品推荐

