简体   繁体   English

如何使用睡眠来限制放入日志的数据?

[英]How to use sleep to limit data put in logs?

I am totally new to python and just started with it.我对 python 完全陌生,刚刚开始使用它。 I wrote following script go get some data from the SenseHat, but unfortunately it doesn't do what it should.我写了以下脚本从 SenseHat 获取一些数据,但不幸的是它没有做它应该做的。

It should get the temp, humidity and pressure from the SenseHat and write in to a file "data.csv" every 10 minutes.它应该从 SenseHat 获取温度、湿度和压力,并每 10 分钟写入一个文件“data.csv”。

Without the sleep(600) the script works fine, but logs to much data.如果没有sleep(600)脚本可以正常工作,但会记录大量数据。 With the sleep function it seems it does nothing...有了sleep功能,它似乎什么都不做......

This is my script:这是我的脚本:

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)

Please could anyone help me and explain to me what is wrong...?请任何人都可以帮助我并向我解释什么是错的......?

Output to files is buffered.输出到文件被缓冲。 If you want to see the intermediate results of the script while it's sleeping, you need to flush the buffer.如果要在脚本休眠时查看脚本的中间结果,则需要刷新缓冲区。

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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM