每5秒下载一次url数据,并保存为csv格式



我正试图得到一个时间循环,我可以下载的数据每5秒1分钟,并保存在一个csv文件。

数据由一个参数和它的值组成,看起来像这样:

{
"blood_pressure_diastolic_value": 70,
"blood_pressure_systolic_value": 120,
"heart_rate_value": 120,
"respiratory_rate_value": null,
"sat02_value": 95
}

我希望标题是名称(例如blood_pressure_diastolic_value),然后为每个时间框架输入具有给定值的新行。

import schedule
import requests
import json
def func():
csv_file = open('cam_data.csv', 'wb')
req = requests.get('URL')
data = req.json()
csv_file.write(data())
csv_file.close()
schedule.every(5).seconds.do(func)
while True:
schedule.run_pending()
time.sleep(60)

这段代码只在文件中保存了一个完整的输出。

我认为这里的问题是你在while循环中使用了time.sleep(60)。

您还试图写入csv文件,这将编辑整个文件。但是您可能想要在csv文件中添加。

可能用这个

csv_file = open('cam_data.csv', 'a')

如果您希望调度程序每5秒运行一次,使用schedule.every(5)

如果你想让while循环在1分钟后停止,你可以使用

import time
run_until = time.time() + 60 * 1
while time.time() < run_until:
# do whatever you do

每次运行func时都重写文件。这意味着您将始终以最后返回的func结束。如果你想要所有运行的结果,你必须在每次运行函数时更改文件名,或者以追加模式打开文件。

最新更新