#python #json #raspberry-pi
#python #json #raspberry-pi
Вопрос:
Я работаю с RaspberryPi с использованием python. Я хочу отправить данные с датчика температуры в файл JSON. Однако я не уверен, как это сделать. Я был бы очень признателен за некоторые рекомендации по этому вопросу. Спасибо!
Вот мой код:
import grovepi
import math
from time import sleep
from grove_rgb_lcd import *
sensor = 4
blue = 0
white = 1
setRGB(0,255,0)
while True:
try:
[temp,humidity] = grovepi.dht(sensor,blue)
if math.isnan(temp) == False and math.isnan(humidity) == False:
print("temp = %.02f C humidity =%.02f%%"%(temp, humidity))
t = str(temp)
h = str(humidity)
setText("Temp:" t "Cn" "Humidity :" h "%")
except (IOError, TypeError) as e:
print(str(e))
setText("")
except KeyboardInterrupt as e:
print(str(e))
setText("")
break
sleep(0.05)
Комментарии:
1. Я не думаю, что вы хотите отправлять данные в файл JSON. Я предполагаю, что скорее вы хотите отправлять данные через JSON? Вы можете создать JSON на python, сначала заполнив словарь, а затем используя модуль json .
2. поместите данные в словарь, и
json.dump()
он docs.python.org/3/library/json.html
Ответ №1:
Для этого вы можете использовать модуль json, я перечислил ниже функции, которые показывают чтение и запись в файлы JSON:
import json
def read_json(file_path:str) -> dict:
"""Takes in a json file path and returns it's contents"""
with open(file_path, "r") as json_file:
content = json.load(json_file)
return content
def store_json(data:dict, file_path:str):
"""Takes in a python dict and stores it as a .json file"""
with open(file_path, "w") as json_file:
json.dump(data, json_file)
Убедитесь, что вы передаете dict store_json()
, иначе он выдаст ошибку.
В вашем случае, я думаю, вы хотите:
data = {}
data["temp"] = t
data["humidity"] = h
store_json(data, "path/to/file.json")
Комментарии:
1. Спасибо! Дополнительный вопрос: я читаю выходные данные в файле .txt. Однако мои данные о температуре и влажности отображаются как «nan». Почему это происходит?
2. @ZaneBrown это может быть вызвано рядом причин. Nan означает не число. Возможно, ваш датчик неправильно распознает, или данные где-то искажаются. Попробуйте распечатать значения обоих сразу после их считывания.