Как использовать сон, чтобы ограничить данные, помещаемые в журналы? - PullRequest
2 голосов
/ 19 февраля 2020

Я совершенно новичок в python и только начал с ним. Я написал следующий скрипт: go получить некоторые данные из SenseHat, но, к сожалению, он не делает то, что должен.

Он должен получить температуру, влажность и давление из SenseHat и записать в файл " data.csv "каждые 10 минут.

Без sleep(600) скрипт работает нормально, но регистрирует большое количество данных. С функцией sleep кажется, что она ничего не делает ...

Это мой сценарий:

from sense_hat import SenseHat
from datetime import datetime
from csv import writer
from time import sleep

sense = SenseHat()

def get_sense_data():
    sense_data = []
    sense_data.append(datetime.now())
    sense_data.append(sense.get_temperature())
    sense_data.append(sense.get_pressure())
    sense_data.append(sense.get_humidity())

    return sense_data

#while True:
#    print(get_sense_data())

with open('data.csv', 'wb') as f:
    data_writer = writer(f)
    data_writer.writerow(['time','temp','pres','hum'])

    while True:
        data = get_sense_data()
        data_writer.writerow(data)

        sleep(600)from sense_hat import SenseHat
from datetime import datetime
from csv import writer
from time import sleep

sense = SenseHat()

def get_sense_data():
    sense_data = []
    sense_data.append(datetime.now())
    sense_data.append(sense.get_temperature())
    sense_data.append(sense.get_pressure())
    sense_data.append(sense.get_humidity())

    return sense_data

#while True:
#    print(get_sense_data())

with open('data.csv', 'wb') as f:
    data_writer = writer(f)
    data_writer.writerow(['time','temp','pres','hum'])

    while True:
        data = get_sense_data()
        data_writer.writerow(data)

        sleep(600)

Пожалуйста, кто-нибудь может мне помочь и объяснить мне, что не так ...?

1 Ответ

2 голосов
/ 19 февраля 2020

Вывод в файлы буферизован. Если вы хотите увидеть промежуточные результаты скрипта, пока он спит, вам нужно выполнить flu sh буфер.

with open('data.csv', 'wb') as f:
    data_writer = writer(f)
    data_writer.writerow(['time','temp','pres','hum'])

    while True:
        data = get_sense_data()
        data_writer.writerow(data)
        f.flush()
        sleep(600)
...