我正在用python阅读这样一个yaml文件:
- test:
name: test1
param:
p1: v1
p2: v2
首先解析文件,然后对其应用一些更改,最后将其转储到多个文件中。你知道吗
def read_test():
with open('file.yaml', "r") as stream:
test = yaml.load(stream)
def write_test(config):
with open('test.yaml', 'w') as outfile:
yaml.dump(config, outfile, default_flow_style=False)
这是我得到的结果:
test:
name: test1
param:
p1: localhost:3000
p2: ../test/run.sh
但我希望:
- test:
name: test1
param:
p1: localhost:3000
p2: ../test/run.sh
以下是我应用更改的方式:
def split_test():
try:
tests = read_test()
for config in tests:
write_test(config)
except yaml.YAMLError as out:
print(out)
此函数用于更改最终输出的语法。有什么帮助吗?你知道吗
这里没有错误,您的代码正是按照您告诉它的方式运行的。你知道吗
好的,读取原始文件并将结果存储在
tests
。你知道吗现在迭代原始文件的内容。这是一个YAML序列,所以可以迭代它。你知道吗
这里有一些评论:
write_test
总是写入同一个文件,这将为每个配置项反复覆盖test.yaml
。你知道吗config
只包含列表项的值,当然列表本身并不是所编写的YAML的一部分。你知道吗要获得所需的输出,只需替换以下两行:
使用:
注意:根据函数的命名,您希望将文件拆分为多个文件。但是,在问题的描述中,您描述了您只想加载它,修改它,然后再次转储它。你应该更清楚地描述你想做什么。你知道吗
相关问题 更多 >
编程相关推荐