Python如何精准记录程序启动后的时分秒及毫秒并写入文件
问题分析与解决方案
- 原代码核心错误:
strptime是将字符串解析为datetime对象的方法,你却反向把datetime.now()转成字符串再解析,逻辑完全颠倒。datetime.now()默认输出格式(如2024-05-20 15:30:45.123456)和你指定的%H-%M-%S-%f不匹配,必然触发格式错误。- 你的实际需求是程序启动后的累计运行时间,而非当前系统时间,用
datetime.now()直接处理无法实现目标。
正确实现方案
核心思路
- 程序启动时记录初始时间基准
- 每次需要记录时,计算当前时间与初始时间的差值
- 将时间差格式化为
h:m:s:ms格式
示例代码
import datetime import time # 程序启动时记录初始时间 start_time = datetime.datetime.now() # 模拟业务运行(替换为你的实际代码逻辑) time.sleep(5.123) # 计算累计运行时间差 elapsed = datetime.datetime.now() - start_time # 拆分时间差为小时、分钟、秒、毫秒 hours = elapsed.seconds // 3600 remaining_secs = elapsed.seconds % 3600 minutes = remaining_secs // 60 seconds = remaining_secs % 60 milliseconds = elapsed.microseconds // 1000 # 格式化为目标字符串 formatted_time = f"{hours}:{minutes}:{seconds}:{milliseconds}" # 写入日志文件 with open("log.txt", "a") as log_file: log_file.write(formatted_time + "\n")
代码说明
start_time存储程序启动瞬间的时间,作为后续计算累计时间的基准elapsed是timedelta类型的时间差对象,包含运行的总秒数和微秒数- 通过整除、取余运算拆分出小时、分钟、秒,微秒除以1000转换为毫秒
- 最终输出完全符合
h:m:s:ms格式(示例输出:0:0:5:123)
内容的提问来源于stack exchange,提问作者Charlie Parker
相关产品推荐
相关产品推荐

