我是编码初学者,我尝试创建一个简短的 python 脚本来重新格式化网络设备中的一些 JSON 并创建一个新的 JSON 文件,最终放在网络服务器上以在我的网络上进行本地访问。我正在使用一些初学者 Python 文献并进行了一些观察,到目前为止我已经:
import json
from datetime import date
import requests
import os
#create JSON structure as object names device
currentmonth = date.today().strftime("%Y%m%d")
device ={} #create empty ojects
month = {}
June24={}
Log_Cabin={}
Monthly_Total={}
month['June24'] = June24
device['Log_Cabin'] = Log_Cabin
Log_Cabin['month'] = month
month['Monthly Total'] = Monthly_Total
#capture JSON from shelly device
url = 'http://192.168.0.241/cm?cmnd=Status%208'
resp = requests.get(url=url)
data = resp.json()
#assign values to variables
currentenergy = (data['StatusSNS']['ENERGY']['Power'])
totalenergyused = (data['StatusSNS']['ENERGY']['Total'])
filename = date.today().strftime("%B%y") + '.json'
key = date.today().strftime("%Y%m%d") #establish key as todays date
value = currentenergy # establish value as energyvariable
print(value)
try:
with open(filename, 'r') as f:
contents = f.read() or '{}'
data = json.loads(contents)
except (FileNotFoundError, json.JSONDecodeError) as e:
print("Error")
device["Log_Cabin"]["month"]['June24'][key] = value
print(value)
with open(filename, 'w+') as f:
print(json.dumps(device), file=f)
这将在文件上创建基本结构并更新嵌套对象的 June24 部分中的 1 个值。我希望将 JSON 对象的这一部分动态命名为使用日期时间的月份。抱歉,如果问题有点基础。
约翰
如果我理解你想要字典的关键字,即月份和年份。不要使用键
'June24'
,而使用 date.today().strftime("%b%y")
。
但我认为更好的结构会是
today=date.today()
device["Log_Cabin"]["year"][today.year]["month"][today.month]["day"][today.day] = value