Home > OS >  Downloading URL-data every 5 seconds and save into csv
Downloading URL-data every 5 seconds and save into csv

Time:12-13

I am trying to get a timeloop with which I can download the data every 5 seconds for 1 minute and save them in a csv file.

The data consists in an argument and its value and looks like this:

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

I would like the header to be the names (e.g. blood_pressure_diastolic_value) and then for each timeframe input a new line with the given values.

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)

This code just saves one entire output in the file.

CodePudding user response:

I think the problem here is u are using time.sleep(60) in your while loop.

Also you are trying to write to the csv file which will edit the whole file. But you probably want to append to the csv file.

Probably use this

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

If you want the scheduler to run every 5 seconds , use schedule.every(5)

And if you want your while loop to stop after 1 minute , you can use this

import time

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

CodePudding user response:

You override your file every time you run func. This means you will always end up with the last return of func. If you want the results of all runs you have to either change your file name every time you run the function or you open the file in append mode.

  • Related