Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何重新排列if语句,使我不';Don’不要在我的输出文件中复制结果_Python_Json_Python 2.7 - Fatal编程技术网

Python 如何重新排列if语句,使我不';Don’不要在我的输出文件中复制结果

Python 如何重新排列if语句,使我不';Don’不要在我的输出文件中复制结果,python,json,python-2.7,Python,Json,Python 2.7,我正在测试一个密钥,如果它存在,我将执行json.dump,如果不存在,我将添加它。我还在检查另外两个键,如果它们不存在,就添加它们。我嵌套了那些辅助测试 对于这段代码,如果键存在,它可以正常工作,但是如果没有,当它添加它时,它会在不应该添加的时候额外添加json.dump。这应该是两种不同的功能吗?或者我如何重新排列它,使它在添加密钥后停止 import json def extract_metadata(input_filename, output_filename, wanted_key

我正在测试一个密钥,如果它存在,我将执行json.dump,如果不存在,我将添加它。我还在检查另外两个键,如果它们不存在,就添加它们。我嵌套了那些辅助测试

对于这段代码,如果键存在,它可以正常工作,但是如果没有,当它添加它时,它会在不应该添加的时候额外添加json.dump。这应该是两种不同的功能吗?或者我如何重新排列它,使它在添加密钥后停止

import json

def extract_metadata(input_filename, output_filename, wanted_key):

    with open(input_filename, "r") as infile:
        data = json.load(infile)

    with open(output_filename, "w") as outfile:

        if "extended" in data['metadata']:
            if "key_1" not in data['metadata']['extended']:
                data['metadata']['extended'].update(key_1={})
            else:
                pass    
            if "key_2" not in data['metadata']['extended']:
                data['metadata']['extended'].update(key_2={})
            else:
                pass        

        json.dump(data["metadata"], outfile)


        else: 
            data['metadata'].update(extended={"loadedBy": "company"})

            json.dump(data['metadata'], outfile)
*******改进的工作代码********

    if "extended" in data['metadata']:
        if "key_1" not in data['metadata']['extended']:
        data['metadata']['extended'].update(key_1={})

        if "key_2" not in data['metadata']['extended']:
        data['metadata']['extended'].update(key_2={})
        with open(output_filename, "w") as outfile:
            json.dump(data['metadata'], outfile)        

else: 
    data['metadata'].update(extended={"loadedBy": "company"})
    changed = True

if changed == True:
    with open(output_filename, "w") as outfile:
        json.dump(data['metadata'], outfile)

设置一个变量,该变量指示是否对数据进行了任何更改。如果变量不是true,则不要转储到输出文件

def extract_metadata(input_filename, output_filename, wanted_key):

    with open(input_filename, "r") as infile:
        data = json.load(infile)

    changed = False

    if "extended" in data['metadata']:
        if "key_1" not in data['metadata']['extended']:
            data['metadata']['extended'].update(key_1={})
            changed = True
        if "key_2" not in data['metadata']['extended']:
            data['metadata']['extended'].update(key_2={})
            changed = True    
    else: 
        data['metadata'].update(extended={"loadedBy": "company"})
        changed = True

    if changed:
        with open(output_filename, "w") as outfile:
            json.dump(data['metadata'], outfile)

顺便说一句,您不需要
else:pass
,只需省去
else:
子句即可。

设置一个变量,指示您是否对数据进行了任何更改。如果变量不是true,则不要转储到输出文件

def extract_metadata(input_filename, output_filename, wanted_key):

    with open(input_filename, "r") as infile:
        data = json.load(infile)

    changed = False

    if "extended" in data['metadata']:
        if "key_1" not in data['metadata']['extended']:
            data['metadata']['extended'].update(key_1={})
            changed = True
        if "key_2" not in data['metadata']['extended']:
            data['metadata']['extended'].update(key_2={})
            changed = True    
    else: 
        data['metadata'].update(extended={"loadedBy": "company"})
        changed = True

    if changed:
        with open(output_filename, "w") as outfile:
            json.dump(data['metadata'], outfile)

顺便说一句,你不需要
else:pass
,你只需要省去
else:
子句。

为什么函数不使用
wanted\u key
?为什么函数不使用
wanted\u key
?记住,如果这对你有帮助,你可以接受这个答案。非常感谢——布尔值完全是解决方案。我对代码做了一些修改,并将其放在原始问题中。如果存在“扩展”键,我不希望转储依赖于其他键,因此我更改了该部分。记住,如果这对您有帮助,您可以接受这个答案。非常感谢--布尔值完全是解决方案。我对代码做了一些修改,并将其放在原始问题中。如果存在“扩展”键,我不希望转储依赖于其他键,因此我更改了该部分。