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

How to use sleep to limit data put in logs?

我是 python 的新手,刚开始使用它。 我写了下面的脚本去从 SenseHat 获取一些数据,但不幸的是它没有做它应该做的事情。

它应该从 SenseHat 获取温度、湿度和压力,并每 10 分钟写入一个文件"data.csv"。

没有 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)

谁能帮我解释一下哪里出了问题...?

缓冲文件输出。如果你想在脚本休眠时看到它的中间结果,你需要刷新缓冲区。

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)