PyYAML使得加载.yml
文档变得微不足道。
config = yaml.load(open('myconfig.yml', 'r'))
我有一个YAML文件名列表filelist
,我正在尝试用简洁的Pythonic方法将它们加载在一起(将它们视为单个文档)。这就是我的尝试。
fhlist = [open(filename, 'r') for filename in filelist]
cfginput = itertools.chain(*fhlist)
config = yaml.load(cfginput)
然而,这导致了例外。
AttributeError: 'itertools.chain' object has no attribute 'read'
我做错了什么?我正在努力完成的任务有一个简单的解决方案吗?
答案 0 :(得分:5)
我认为loading them together
表示要么全部读取,要么合并它们:
yamls = []
for filename in filelist:
with open(filename) as f:
yamls.append(yaml.load(f))
yamls = {}
for filename in filelist:
with open(filename) as f:
yamls.update(yaml.load(f))
注意:这将覆盖具有相同键的属性,并且不是递归的。
编辑:如果你想连接所有文件并在yaml之后阅读它们:
content = ''
for filename in filelist:
with open(filename) as f:
content += f.read()
result = yaml.load(content)
这可能会得到与合并yaml dicts相同的结果......