如何为CSV每行添加实时毫秒级时间戳?解决时间戳重复问题
解决CSV每行添加实时毫秒级时间戳的问题
你遇到的问题核心是时间戳只在程序启动时计算了一次,后续所有行都复用这个固定时间。要实现每行对应实时时间,必须在处理/写入每一行的时机重新获取当前时间。
方案1:在原始写入流程中添加实时时间戳(推荐)
这是最准确的方式,时间戳是数据生成时的真实时间,而非事后处理的时间。修改你原本的写入代码:
import csv from datetime import datetime csv_path = 'keypoint_output1.csv' # 每次写入行前,实时获取当前时间并格式化为毫秒级 curr_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] with open(csv_path, 'a', newline="") as f: writer = csv.writer(f) # 将时间戳追加到该行数据末尾后写入 writer.writerow([*pre_processed_landmark_list, curr_time])
代码说明:
datetime.now():每次调用都会获取当前系统的实时时间strftime('%Y-%m-%d %H:%M:%S.%f'):生成包含微秒的时间字符串(格式如2023-02-11 12:45:10.557105)[:-3]:截断微秒的后三位,只保留前三位实现毫秒级精度(最终格式如2023-02-11 12:45:10.557)
方案2:给已存在的CSV文件补实时时间戳
如果需要对已生成的CSV文件每行添加处理时的实时时间,只需把时间获取逻辑移到循环内部:
import csv from datetime import datetime with open("keypoint_output1.csv", "r") as fin, open("out.csv", 'w', newline='') as fout: reader = csv.reader(fin) writer = csv.writer(fout) for line in reader: # 每处理一行就重新获取当前实时时间 curr_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] line.append(curr_time) writer.writerow(line)
关键注意点:
- 必须将
datetime.now()放在循环内部,确保每行都能获取最新的时间 - 如果不需要完整日期,可调整
strftime的格式(比如你之前用的'%M:%S.%f'),同样用[:-3]截断到毫秒
内容的提问来源于stack exchange,提问作者schieleines
相关产品推荐
相关产品推荐

