将 Pi 的传感器数据保存到 csv 文件中

Saving sensor data from Pi into csv file

我正在设置一个 raspberry pi 零来检测空气质量、温度和湿度。我能够 运行 脚本每 60 秒获取一次感应数据。如果我需要定期将数据保存在csv文件中怎么办?


import bme680
import time
import datetime
from datetime import datetime
from bme680 import BME680
from pms5003 import PMS5003, ReadTimeoutError

try:
    sensor = bme680.BME680(bme680.I2C_ADDR_PRIMARY)
except IOError:
    sensor = bme680.BME680(bme680.I2C_ADDR_SECONDARY)


pms5003 = PMS5003()
readings = pms5003.read()
sensor.set_humidity_oversample(bme680.OS_2X)
sensor.set_pressure_oversample(bme680.OS_4X)
sensor.set_temperature_oversample(bme680.OS_8X)
sensor.set_filter(bme680.FILTER_SIZE_3)

print('Data sensing')

try:
    while True:
        if sensor.get_sensor_data():
            output = datetime.now().strftime('%Y-%m-%d,%H:%M:%S,')+'{0:.2f} C,{1:.2f} hPa,{2:.3f} %RH'.format(
                sensor.data.temperature,
                sensor.data.pressure,
                sensor.data.humidity)

            if pms5003.read():
               print(output, readings)
            else:
                print(output)

        time.sleep(60)

except KeyboardInterrupt:
    pass

我希望程序将数据保存在一个 csv 文件中,其中 headers 如日期、时间、温度、湿度等

要将该数据存储为 CSV 或任何其他文件格式,python 中有很多方法。如果你想要更可控和更详细的 csv,那么你可以使用 Pandas 或 Numpy。

但如果您只是想要一个简单的解决方案,那么这里就是。

def store_data(time,temperature,pressure,humidity):
    append = [time,temperature,pressure,humidity]
    with open('sensor_output.csv', 'a') as csvFile:
        writer = csv.writer(csvFile)
        writer.writerow(append)
    csvFile.close()

只需在此函数中传递您的值,python 将处理其余部分。文件将自动创建,每次都会附加。

   store_data(datetime.now().strftime('%Y-%m-%d,%H:%M:%S,'),sensor.data.temperature,sensor.data.pressure,sensor.data.humidity)

这就是您调用该函数的方式。

#更新: 如果您熟悉 pandas 和 DataFrame,那么这个答案可能对您有所帮助:

Writing a pandas DataFrame to CSV file