Я пытаюсь записать показания Enviro +, подключенного к Raspberry P ie 3 Model B + (следующий вопрос от: Передача данных из сценария python в файл .csv или .txt Я пытался опираться на ответ frost-nzcr4 , но он не отображал время измерения данных. В скобках я не мог добавить что-то, что добавило бы время сначала (кажется, писатель принимает только один аргумент?)
writer.writerow(data.data[:-2])
Я на самом деле пытаюсь достичь чего-то похожего на это 2020-04-16 22:31:33.427
, за которым следует уважаемое значение датчика.
Так как это не было Работая не так, как я хотел, я провел некоторый поиск и попытался найти другое решение Сбор данных, ведение журнала, построение графиков и обслуживание - простое руководство . Однако я застреваю с Следующий код. Это решение использует библиотеку «datetime», в то время как другие используют «time». Что мне нравится в этом решении, так это то, что там есть заголовок. Так что в моем случае это будет включать нечто подобное ( время не сработает)
[ВРЕМЯ, 'PM1,0 мкг / м3 (ультрадисперсные частицы)', 'PM2,5 мкг / м3 (частицы горения, органические c соединения, металлы) ',' PM10 мкг / м3 (пыль, пыльца, споры плесени) ',' PM1,0 мкг / м3 (атмосфера env) ',' PM2,5 мкг / м3 (атмосфера env) ',' PM10 мкг / м3 (атмосфера env) ','> 0,3um в 0,1 л воздуха ','> 0,5um в 0,1 л воздуха ','> 1,0um в 0,1 л воздуха ','> 2,5um в 0,1 л воздуха ','> 5,0um в 0,1 L air ','> 10um в 0.1L air ']
Это решение не принесло мне дальнейшего развития, поэтому я вернулся к первому пути с его попыткой, и пока я пытался слиться с пример Уточнить цену , сделанный Пиморини. Мое окончательное решение перед тем, как отказаться от сегодняшнего вечера, заключается в следующем:
> #!/usr/bin/env python3
import time
from pms5003 import PMS5003, ReadTimeoutError
import logging
import csv
logging.basicConfig(
format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s',
level=logging.INFO,
datefmt='%Y-%m-%d %H:%M:%S')
pms5003 = PMS5003()
time.sleep(1.0)
# pms5003.read([:-2])
# I tried to see if I can get the data separately, as this may be clearer, but no return pm_ug_per_m3
# Creating the csv file
# with open('pms5003.csv', 'w', newline='') as csvfile:
# writer=csv.writer(csvfile)
# writer.writerow(['TIME',
# 'PM1.0 ug/m3 (ultrafine particles)',
# 'PM2.5 ug/m3 (combustion particles,organic compounds, metals)',
# 'PM10 ug/m3 (dust, pollen, mould spores)',
# 'PM1.0 ug/m3 (atmos env)',
# 'PM2.5 ug/m3 (atmos env)',
# 'PM10 ug/m3 (atmos env)',
# '>0.3um in 0.1L air',
# '>0.5um in 0.1L air',
# '>1.0um in 0.1L air',
# '>2.5um in 0.1L air',
# '>5.0um in 0.1L air',
# '>10um in 0.1L air'])
try:
while True:
try:
with open('pms5003.csv', 'a', newline='') as csvfile:
writer = csv.writer(csvfile, delimiter=';', quotechar=',', quoting=csv.QUOTE_MINIMAL)
readings = pms5003.read()
logging.info(readings)
# csvcontent=('time' + 'readings.data[:-2]')
x=logging.basicConfig(), readings.data[:-2]
writer.writerow(readings.data[:-2])
except ReadTimeoutError:
pms5003 = PMS5003()
except KeyboardInterrupt:
pass
Что явно не работает.
В идеале должен быть заголовок, затем в начале каждой строки дата и время. Звучит просто, но я потратил на это последние 4 часа.