为了更新1000个Json文件,以自动方式从主Yaml文件更新它。在迭代过程中,我面临for循环中的问题。我使用pip安装了pyyaml,我使用的是python 3.7版本
下面是我的yaml文件(master_conf.yaml)
- sourcesys1:
sourceServer: 1.2.3.500
MailTo: gokul@gmail.com
- sourcesys2:
sourceServer1: 2.2.3.500
sourceServer2: 3.2.3.500
MailTo: gokul@gmail.com
我的Json文件(sourcesys1.Json)。。sourcesys1000.json
{
"source":"sourcesys1",
"frequency":"daily",
"sourceServer":"1.2.1.2",
"hostName":"1.2.1.3",
"fileFormat":"csv",
"delimiterType":"semicolon"
}
我尝试迭代一个yaml文件,并尝试将这些值作为命令并替换为json文件
import yaml
with open("master_conf.yaml", 'r') as f:
yaml_config = yaml.safe_load(f)
for config in yaml_config:
... config.keys()[0]: config[config.keys()[0]]
我在for语句中得到了这个错误
回溯(最近一次呼叫最后一次): 文件“”,第2行,在 TypeError:“dict_keys”对象不可下标
需要关于上述错误的帮助吗
完成后,我需要迭代json文件以替换yaml文件中的值
这是我在创建yaml文件字典时面临的最后一个问题代码
import json
import yaml
with open("mast_conf.yaml", 'r') as f:
yaml_config = yaml.safe_load(f)
yaml_config = {
config.keys()[0]: config[config.keys()[0]]
for config in yaml_config
}
json_files = (
"sourcesystem1.json",
"sourcesystem2.json",
)
for json_file in json_files:
with open(json_file, "r") as f:
sourcesystem_conf = json.load(f)
sourcesystem = sourcesystem_conf["source"]
if sourcesystem in yaml_config:
for key, value in yaml_config[sourcesystem].items():
sourcesystem_conf[key] = value
with open(json_file, "w") as f:
json.dump(sourcesystem_conf, f, indent=2)
在Python 3中,keys()返回一个iterable但不可索引的对象。 尝试将其转换为列表 要将yaml转换为示例字典,可以使用库bios
这将提供您提供的字典格式
相关问题 更多 >
编程相关推荐