我有下面的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
nodeSelector:
key: value
一旦加载了该YAML文件,您的
pod
就是一个带有单键spec
的dict。您可以检查该键(print(pod['spec']
)的值,您将看到它是dict,只有一个键containers
。既然您想向该dict添加一个额外的键nodeSelector
,那么您应该将其添加到pod['spec']
:请注意,输出中的
key:value
(在:
后面没有空格,key
和value
之间没有引号)不是一个映射,而是一个标量字符串。在@zwer在评论中给出的“解决方案”:
^{pr2}$pod["spec"] = {"nodeSelector": {"key": "val"}}
不正确,因为它将转储为:例如,替换
spec
的值,从而用键containers
删除现有的dict/映射。在相关问题 更多 >
编程相关推荐