请求优化URL调用数据存储代码:实现CSV行列结构化存储
优化方案:按列存储生理数据并添加时间戳
核心问题修正
- 原代码中
if run_time % 5 == 0逻辑错误:run_time是固定值60,这个条件永远为真,无法实现每5秒执行一次的需求。 - 直接写入JSON字符串会导致所有数据挤在一个单元格,完全不符合CSV的列结构规范。
优化后代码实现
import time import requests import csv from datetime import datetime run_time = 60 start_time = time.time() # 定义CSV表头,包含时间戳和所有生理参数字段 fieldnames = [ "timestamp", "blood_pressure_diastolic_value", "blood_pressure_systolic_value", "heart_rate_value", "respiratory_rate_value", "sat02_value" ] url = 'URL' # 首次创建文件时写入表头 with open('cam_data1.csv', 'w', newline='', encoding='utf-8') as csv_file: writer = csv.DictWriter(csv_file, fieldnames=fieldnames) writer.writeheader() # 循环执行直到达到总运行时长 while time.time() - start_time < run_time: # 生成当前时间戳,用于数据追踪 current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") # 请求并解析数据 req = requests.get(url) data = req.json() # 给数据追加时间戳字段 data["timestamp"] = current_time # 追加写入一行结构化数据 with open('cam_data1.csv', 'a', newline='', encoding='utf-8') as csv_file: writer = csv.DictWriter(csv_file, fieldnames=fieldnames) writer.writerow(data) # 控制5秒执行间隔 time.sleep(5)
关键优化点说明
- 使用
csv.DictWriter:自动匹配字段与列,确保每个参数对应独立列,无需手动拼接CSV行内容,避免格式错误。 - 新增时间戳:每条数据附带采集时间,解决后续数据对比时的时序追踪问题。
- 修正定时逻辑:通过
time.sleep(5)实现稳定的5秒间隔,同时用time.time() - start_time准确判断总运行时长。 - 用
with语句管理文件:自动处理文件关闭,避免资源泄漏,同时保证写入操作的可靠性。 - 表头单独写入:仅在首次创建文件时写入表头,后续只追加数据行,避免重复表头。
内容的提问来源于stack exchange,提问作者WonderWoman
相关产品推荐
相关产品推荐

