![](/img/trans.png)
[英]How to add new key value to yaml without overwriting it in python?
[英]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
(在沒有空格之后:
和key
和value
周圍沒有引號),不是映射而是單個標量字符串。
@zwer在評論中給出的“解決方案”:
pod["spec"] = {"nodeSelector": {"key": "val"}}
不正確,因為它將轉儲為:
spec:
nodeSelector:
key: val
即替換spec
的值,從而刪除現有的dict /映射與密鑰containers
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.