python-if和elif的输出写入json文件 [英] python - output from if and elif write to json file

查看:69
本文介绍了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"}

这篇关于python-if和elif的输出写入json文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆