我正在设置一个覆盆子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文件中。
答案 0 :(得分:0)
要将数据存储为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)
这是根据情况调用函数的方式。
#UPDATE: 如果您熟悉pandas和DataFrame,那么此答案可能会帮助您: