如何打开并读取当日生成的指定时间戳命名的日志文件?
筛选当日日志文件的解决方案
你可以通过获取当前日期的格式化字符串,结合glob精准匹配当日生成的日志文件,具体实现如下:
方法一:直接构造匹配模式(更高效)
利用datetime生成当日的MMDDYYYY格式字符串,直接作为glob匹配规则的一部分:
import glob from datetime import datetime # 生成当日的MMDDYYYY格式字符串(比如2023年1月1日会得到"01012023") today_date = datetime.now().strftime("%m%d%Y") # 匹配所有以当日日期开头的日志文件 today_log_files = glob.glob(f"File-{today_date}*.log") # 处理匹配到的文件 if today_log_files: # 如果当日可能生成多个日志,可循环处理 for log_path in today_log_files: with open(log_path, "r") as f: # 在这里编写你的文件处理逻辑 content = f.read() print(content) else: print("未找到当日生成的日志文件")
方法二:先获取所有日志再筛选
如果需要先拿到全部日志文件再做二次筛选,也可以用列表推导式实现:
import glob from datetime import datetime today_date = datetime.now().strftime("%m%d%Y") all_log_files = glob.glob("File-*.log") # 筛选出文件名包含当日日期的文件 today_log_files = [file for file in all_log_files if today_date in file] # 后续处理同方法一 if today_log_files: for log_path in today_log_files: with open(log_path, "r") as f: # 处理文件内容 pass else: print("当日无日志文件")
注意事项
- 确保脚本运行的时区和日志生成的时区一致,如果存在时区差异,可以改用
datetime.utcnow()或者指定时区(比如pytz库)来生成日期字符串,避免日期匹配错误。 - 如果当日会生成多个日志文件,上述代码会匹配所有符合条件的文件,你可以根据实际需求选择处理单个或多个文件。
内容的提问来源于stack exchange,提问作者marina
相关产品推荐
相关产品推荐

