我正在尝试使用python脚本读取和编写json文件(我在shell脚本中嵌入了这个python块)
test.json
Run Code Online (Sandbox Code Playgroud){ "environments": ["dev", "qa", "load", "prod"], "region": ["asia", "europe", "americas", "asia-pacific"], "product": ["mobile", "internet", "kiosk", "branch"], "ID": ["mobile:111", "internet:222", "kiosk:333", "branch:444"] }
我正在尝试添加区域(英国),在此之前我想检查并添加它是否在列表中不可用.下面是我的python代码,我可以更新值
reg_val="uk"
a_dict = {}
try:
with open('test.json') as data_file:
data = json.load(data_file)
temp_list = []
for dicObj in data["region"]:
temp_list.append(dicObj)
temp_list.append(reg_val)
data["region"] = temp_list
a_dict["region"] = data["region"]
with open('test.json','w') as f:
f.write(json.dumps(a_dict, indent=4, sort_keys=True, encoding="utf-8"))
except IOError as io:
print "ERROR: ", io
Run Code Online (Sandbox Code Playgroud)
我能够更新json文件,但它删除了其他列表.我看到的输出是
{
"region": [
"asia",
"europe",
"americas",
"asia-pacific",
"uk"
]
}
Run Code Online (Sandbox Code Playgroud)
保持简单,只有reg_val与in运营商一起存在才附加.然后你可以转储到另一个文件.
import json
reg_val = "uk"
with open('test.json') as in_file, open('out.json', 'w') as out_file:
data = json.load(in_file)
if reg_val not in data['region']:
data['region'].append(reg_val)
json.dump(data, out_file, indent=4, sort_keys=True)
Run Code Online (Sandbox Code Playgroud)
这给出了以下out.json:
{
"ID": [
"mobile:111",
"internet:222",
"kiosk:333",
"branch:444"
],
"environments": [
"dev",
"qa",
"load",
"prod"
],
"product": [
"mobile",
"internet",
"kiosk",
"branch"
],
"region": [
"asia",
"europe",
"americas",
"asia-pacific",
"uk"
]
}
Run Code Online (Sandbox Code Playgroud)