【发布时间】:2021-07-23 22:07:03
【问题描述】:
我有一些需要合并的 Kubernetes YAML 文件。
为此,我尝试使用 Python。
第二个文件sample.yaml应该合并到第一个文件source.yaml。
source.yaml 文件有一个部分sample:,应在其中添加完整的sample.yaml。
我尝试使用以下代码:
#pip install pyyaml
import yaml
def yaml_loader(filepath):
#Loads a yaml file
with open(filepath,'r')as file_descriptor:
data = yaml.load(file_descriptor)
return data
def yaml_dump(filepath,data):
with open(filepath,"w") as file_descriptor:
yaml.dump(data, file_descriptor)
if __name__ == "__main__":
file_path1 = "source"
data1 = yaml_loader(file_path1)
file_path2 = "sample.yaml"
with open(file_path2, 'r') as file2:
sample_yaml = file2.read()
data1['data']['sample'] = sample_yml
yaml_dump("temp.yml", data1)
这是创建一个新文件 temp.yml,但不是换行符,而是将 \n 保存为字符串:
如何解决这个问题?
【问题讨论】:
-
您正在以字符串/字节的形式读取第二个文件。您是否还应该在第二个文件上使用
yaml_loader()来获取另一个字典,然后合并字典? -
我试过了,但它篡改了同名的部分。有没有办法按原样转储第二个 yaml 并只保留行间距而不是 \n?
-
您正在做的是将第二个 YAML 作为单个字符串包含在内。您会得到
\n和双引号,因为您将单个字符串值分配给sample。如果您想包含第二个文件的 YAML 中描述的数据结构,您必须将其加载为 YAML,以便 Python 理解该结构。 -
要获得任何帮助,您必须添加两个 yaml 文件的代表性示例。
-
请将输入文件的(简短)样本添加到您的问题中,以便它是minimal reproducible example。