1.字典结构如下:{cell1: { level1:[rsrp1,att1], level2:[rsrp2,att2] }, cell2: {level3:[rsrp3,att3], }
2.需求:实现嵌套字典内容保存到json文件,读取,更新,重写
3.代码如下:
import os
import json
class Update_Get_Rewrite_data():
"""
desc:实现嵌套字典内容保存到json文件,读取,更新,重写
"""
def get_data(self):
"""
desc:读取json文件里的字典内容
字典结构: {cell1:
{ level1:[rsrp1,att1],
level2:[rsrp2,att2] },
cell2:
{level3:[rsrp3,att3],
}
:return:
"""
path = os.path.join(os.getcwd() + "\\test.json") # 获取当前工作目录,拼接json路径
try:
# 1.如果文件不存在,新建一个
if not os.path.exists(path):
with open(path, "w", )as f:
f.write("")
print("文件不存在,新建test.json")
# 2.文件存在,读取文件内容
else:
with open(path, "r")as f:
for jsonstr in f.readlines(): # 按行读取json文件,每一行为一个字符串
data = json.loads(jsonstr)
print(data)
print("get success")
except Exception as e:
print("打开json文件失败==>", e)
def update_data(self, cell, level, rsrp, att):
"""
desc:更新嵌套字典的内容,可在原有的基础上修改
字典结构: {cell1:
{ level1:[rsrp1,att1],
level2:[rsrp2,att2] },
cell2:
{level3:[rsrp3,att3],
}
:return:
"""
# 1.更新之前,先加载json文件,拿到字典内容
path = os.path.join(os.getcwd() + "\\test.json")
print(path)
try:
# 路径无json文件,创建一个新的并写入
if not os.path.exists(path):
dict = {}
dict[cell] = {}
dict[cell][level] = [rsrp, att]
item = json.dumps(dict)
with open(path, "w", )as f:
f.write(item)
print("write success")
# 路径有json文件,读取出来
else:
with open(path, "r")as f:
for jsonstr in f.readlines():
gnodeb_dict = json.loads(jsonstr)
if cell not in gnodeb_dict:
gnodeb_dict[cell] = {level: [rsrp, att]}
# 如果键值对存在,新增
else:
gnodeb_dict[cell][level] = [rsrp, att]
# 写入json文件
item = json.dumps(gnodeb_dict)
with open(path, "w")as f:
f.write(item)
print("write success")
except Exception as e:
print("write error==>", e)
def rewrite_data(self, cell, level, rsrp, att):
"""
重写嵌套字典的内容
字典结构: {cell1:
{ level1:[rsrp1,att1],
level2:[rsrp2,att2] },
cell2:
{level3:[rsrp3,att3],
}
:return:
"""
path = os.path.join(os.getcwd() + "\\test.json")
# 拼接参数为嵌套字典
dict = {}
dict[cell] = {}
dict[cell][level] = [rsrp, att]
try:
# 1.如果文件不存在,新建一个json文件并写入
if not os.path.exists(path):
item = json.dumps(dict)
with open(path, "w", )as f:
f.write(item)
print("write success")
# 2.文件存在,直接覆盖原内容
else:
item = json.dumps(dict)
with open(path, "w", )as f:
f.write(item)
print("rewrite success")
except Exception as e:
print("rewrite error==>", e)
data = Update_Get_Rewrite_data()
# 要传入的参数示例
cell = "gNodeB_cell1"
level = "level4"
rsrp = 35
att = 999
# data.get_data()
# data.update_data(cell,level,rsrp,att)
# data.rewrite_data(cell,level,rsrp,att)
4.目录结构