简体   繁体   中英

python - output from if and elif write to json file

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"

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()

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"
]
}

Here is the 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"
]
}

FINAL Expected output:

{
"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)

ouput:

{"xyz": "1.0.129.0", "alfa": "1.0.22.0", "abc": "1.0.44.0", "test": "1.0.144.0"}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM