You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求优化URL调用数据存储代码:实现CSV行列结构化存储

优化方案:按列存储生理数据并添加时间戳

核心问题修正

  1. 原代码中if run_time % 5 == 0逻辑错误:run_time是固定值60,这个条件永远为真,无法实现每5秒执行一次的需求。
  2. 直接写入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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:35:27