python-if和elif的输出写入json文件
问题描述:
我正在尝试查找文件之间的差异,并获取输出.但是如果有人可以帮助我,我该如何再次将其写入新的json文件. 这是我的代码
I am trying to find the difference between the files and getting the output as well. but if someone could help me on how can i write that to new json file again. Here is my code
def check(a,b):
diff = False
for a_key in a:
if a_key not in b:
diff = True
#print "key %s in a, but not in b" %a_key
print a_key,a[a_key]
elif a[a_key] != b[a_key]:
diff = True
#print "key %s in a and in b, but values differ (%s in a and %s in b)" %(a_key, a[a_key], b[a_key])
print a_key,b[a_key]
if not diff:
print "both files are identical"
我想将输出写入json文件,而不是在控制台上打印. 我在打印后尝试过此操作,但不希望使用o/p.感谢您的帮助.
I would like to write the output to json file instead of printing on console. I tried this after print but not desired o/p. Any help is appreciated.
res=a_key,b[a_key]
out_file = open("out.json","a")
json.dump(res,out_file, indent=4)
out_file.close()
这是示例文件.文件1:
Here are the Sample files. file1:
{
"abc": [
"build=1.0.44.0",
"proxy=none"
],
"xyz": [
"proxy=none",
"build=1.0.129.0"
],
"lmn": [
"build=1.0.127.0",
"proxy=none"
],
"test": [
"build=1.0.144.0",
"proxy=http"
],
"alfa": [
"build=1.0.22.0",
"proxy=http"
],
"beta": [
"proxy=http",
"build=1.0.17.0"
]
}
这是File2:
{
"abc": [
"build=1.0.43.0",
"proxy=none"
],
"xyz": [
"proxy=none",
"build=1.0.128.0"
],
"lmn": [
"build=1.0.127.0",
"proxy=none"
],
"test": [
"build=1.0.141.0",
"proxy=http"
],
"alfa": [],
"beta": [
"proxy=http",
"build=1.0.17.0"
]
}
最终预期输出:
{
"abc": "1.0.44.0",
"xyz": "1.0.129.0",
"test":"1.0.144.0",
"alfa":"1.0.22.0"
}
答
A = {"abc":["build=1.0.44.0","proxy=none"],"xyz":["proxy=none","build=1.0.129.0"],"lmn":["build=1.0.127.0","proxy=none"],"test":["build=1.0.144.0","proxy=http"],"alfa":["build=1.0.22.0","proxy=http"],"beta":["proxy=http","build=1.0.17.0"]}
B = {"abc":["build=1.0.43.0","proxy=none"],"xyz":["proxy=none","build=1.0.128.0"],"lmn":["build=1.0.127.0","proxy=none"],"test":["build=1.0.141.0","proxy=http"],"alfa":[],"beta":["proxy=http","build=1.0.17.0"]}
import json
def check(a,b):
diff = False
output = {}
for a_key in a:
if a_key not in b:
diff = True
output[a_key] = a[a_key][0]
elif a[a_key] != b[a_key]:
diff = True
for v in a[a_key]:
if 'build=' in v:
output[a_key] = v.replace('build=','')
if not diff:
print ("both files are identical")
else:
print(output)
with open("output.json","w") as outfile:
outfile.write(json.dumps(output))
check(A,B)
输出:
{"xyz": "1.0.129.0", "alfa": "1.0.22.0", "abc": "1.0.44.0", "test": "1.0.144.0"}