簡體   English   中英

python:如何在yaml文件中添加新密鑰和值

[英]python: how to add a new key and a value in yaml file

我有以下YAML文件。 我需要使用python使用新的鍵值對更新YAML文件。

我正在做以下但是,它給了我錯誤:

pod = mylib.load_yaml("net/pod.yaml")
pod['spec']['nodeSelector']['key']='val'

它給錯誤說KeyError:'nodeSelector'

spec:
  containers:
  - image: ceridwen/networking:v1
    imagePullPolicy: Always
    name: networking
    readinessProbe:
      tcpSocket:
        port: 5000
      initialDelaySeconds: 5
      periodSeconds: 1
    restartPolicy: Always

我需要用新的鍵值更新它

spec:
  containers:
  - image: ceridwen/networking:v1
    imagePullPolicy: Always
    name: networking
    readinessProbe:
      tcpSocket:
        port: 5000
      initialDelaySeconds: 5
      periodSeconds: 1
    restartPolicy: Always
  nodeSelector:
    key: value 

加載YAML文件后,您的pod就是一個帶有單個密鑰spec的dict。 您可以檢查該鍵的值( print(pod['spec'] ),你會看到它是dict,只有一個密鑰containers 。由於你想要為該dict添加一個額外的關鍵nodeSelector ,你應該添加到pod['spec']

pod['spec']['nodeSelector'] = dict(key='value')

請注意key:value輸出中的key:value (在沒有空格之后:keyvalue周圍沒有引號),不是映射而是單個標量字符串。


@zwer在評論中給出的“解決方案”:

pod["spec"] = {"nodeSelector": {"key": "val"}}不正確,因為它將轉儲為:

spec:
  nodeSelector:
    key: val

即替換spec的值,從而刪除現有的dict /映射與密鑰containers

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM