我试图找到文件之间的差异并获得输出。但如果有人可以帮助我,我怎么能再次写入新的json文件。 这是我的代码
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。任何帮助表示赞赏。
res=a_key,b[a_key]
out_file = open("out.json","a")
json.dump(res,out_file, indent=4)
out_file.close()
以下是示例文件。文件1:
{
"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"
}
答案 0 :(得分: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"}