Добавление данных в файл JSON

#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 означает не число. Возможно, ваш датчик неправильно распознает, или данные где-то искажаются. Попробуйте распечатать значения обоих сразу после их считывания.