使用Python生成特定结构可更新CSV文件 用于光谱仪测试数据记录
光谱仪测试CSV文件生成实现方案
核心实现逻辑
- 首次创建CSV文件时写入表头:第一列首单元格留空,后续列接固定的测试指标字段
- 后续每次测试仅追加新行:行首为当前测试的日期时间,后续列接本次测试的对应数据
- 自动判断文件状态,避免重复写入表头
完整可运行代码
import csv import os import time # 可自定义配置 csv_save_path = "spectrum_test_result.csv" # 第一行固定常量向量(对应测试指标名称) test_index = ['波长', '强度'] # 可根据实际测试指标扩展 def append_test_result(test_data): # 生成当前日期时间字符串 current_time = time.strftime("%m/%d/%Y, %H:%M:%S", time.localtime()) # 判断文件是否已存在 is_file_exist = os.path.exists(csv_save_path) with open(csv_save_path, 'a', newline='', encoding='utf-8') as f: csv_writer = csv.writer(f) # 首次创建文件时写入表头 if not is_file_exist: # 表头第一格为空,后接固定测试指标 header_row = [''] + test_index csv_writer.writerow(header_row) # 拼接本次测试行:第一格为时间,后接测试数据 current_row = [current_time] + test_data csv_writer.writerow(current_row) # 调用示例:单次测试完成后调用即可 if __name__ == "__main__": # 模拟本次测试得到的数据,顺序需和test_index的指标一一对应 current_test_data = [546, 2870] append_test_result(current_test_data)
关键说明
- 写入时间时需将时间字符串放在列表的第一个元素,避免直接传入字符串被拆分为单个字符占用多列
- 新增
newline=''参数可解决Windows系统下CSV打开出现多余空行的问题 - 测试数据列表的元素顺序需和
test_index定义的指标顺序保持一致
内容的提问来源于stack exchange,提问作者Rotemyuv
相关产品推荐
相关产品推荐

