使用python编写json文件
我正在尝试使用python脚本读取和编写json文件。我已将此python块嵌入到shell脚本中 test.json 我试图添加regionuk,在此之前我想检查并添加它是否在列表中不可用。 下面是我的python代码,我可以更新该值使用python编写json文件,python,json,Python,Json,我正在尝试使用python脚本读取和编写json文件。我已将此python块嵌入到shell脚本中 test.json 我试图添加regionuk,在此之前我想检查并添加它是否在列表中不可用。 下面是我的python代码,我可以更新该值 reg_val="uk" a_dict = {} try: with open('test.json') as data_file: data = json.load(data_file) temp_list = []
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
我能够更新json文件,但它删除了其他列表
{
"region": [
"asia",
"europe",
"americas",
"asia-pacific",
"uk"
]
}
只需保持简单,并且仅当带有in运算符的regu val存在时才进行追加。然后您可以直接转储到另一个文件
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)
这将给出以下out.json:
只需保持简单,并且仅当带有in运算符的regu val存在时才进行追加。然后您可以直接转储到另一个文件
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)
这将给出以下out.json:
删除其他列表的原因是您使用的是写入模式而不是追加模式。当您重新打开test.json文件时,使用open'test.json',a'代码附加到test.json,而不覆盖您以前编写的内容
编辑:如注释中所述,不适合附加到json文件。相反,在一个转储中写入所有内容。我推荐RoadRunner的方法。删除其他列表的原因是因为您使用的是写入模式而不是附加模式。当您重新打开test.json文件时,使用open'test.json',a'代码附加到test.json,而不覆盖您以前编写的内容
编辑:如注释中所述,不适合附加到json文件。相反,在一个转储中写入所有内容。我推荐RoadRunner的方法。这是因为您正在向文件中写入一个dict,它被初始化为一个空dict,然后只在其中插入了数据[region]
我提供了一些代码作为示例,但RoadRunner比我快了嘿,他跑得很快!。您还需要小心处理文件,因为读文件处理程序与写文件处理程序同时打开-这可能很危险。这是因为您正在向文件写入一个dict,该文件初始化为空dict,然后只插入了数据[region]
我提供了一些代码作为示例,但RoadRunner比我快了嘿,他跑得很快!。您还需要小心处理文件,因为读文件处理程序与写文件处理程序同时打开-这可能很危险。为什么不将数据写回文件而不是只包含区域的新dict?为什么不将数据写回文件而不是dict,这是一个只包含区域的新dict。但这将附加列表的json表示,包括外部大括号{。这将在以后导致错误。好的一点,我将编辑我的帖子来提及这一点。我打算建议跟踪有问题的行,然后重新编写整个内容,包括该行,但是@RoadRunner也击败了我,但这将附加列表的json表示,包括外部大括号{。这将在以后导致错误。好的观点,我将编辑我的帖子来提及这一点。我打算建议跟踪有问题的行,然后重写整个内容,包括那行内容,但是@RoadRunner也击败了我到itMeep Meep,你太快了!Meep Meep,你太快了!
{
"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"
]
}