Python 如何重新排列if语句,使我不';Don’不要在我的输出文件中复制结果
我正在测试一个密钥,如果它存在,我将执行json.dump,如果不存在,我将添加它。我还在检查另外两个键,如果它们不存在,就添加它们。我嵌套了那些辅助测试 对于这段代码,如果键存在,它可以正常工作,但是如果没有,当它添加它时,它会在不应该添加的时候额外添加json.dump。这应该是两种不同的功能吗?或者我如何重新排列它,使它在添加密钥后停止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
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
?记住,如果这对你有帮助,你可以接受这个答案。非常感谢——布尔值完全是解决方案。我对代码做了一些修改,并将其放在原始问题中。如果存在“扩展”键,我不希望转储依赖于其他键,因此我更改了该部分。记住,如果这对您有帮助,您可以接受这个答案。非常感谢--布尔值完全是解决方案。我对代码做了一些修改,并将其放在原始问题中。如果存在“扩展”键,我不希望转储依赖于其他键,因此我更改了该部分。