输入yaml文件是:
apiVersion: apps/v1
kind: Deployment
metadata:
name: example
namespace: Main
spec:
selector:
matchLabels:
app: httpd
replicas: 3
template:
metadata:
labels:
app: httpd
spec:
containers:
- name: httpd
image: >-
image-registry.openshift-image-registry.svc:5000/openshift/httpd:latest
ports:
- containerPort: 8080
需要将其变成一个表,其中第一列是键,第二列是值,并且键必须与嵌套一起保存。
首先我上传yaml文件:
import yaml
from yaml.loader import FullLoader
yaml_file_path = 'example/deployment.yaml'
with open(yaml_file_path) as file:
data = yaml.load(file, Loader=FullLoader)
print(data)
在监视器上显示整个文件。
现在我想遍历整个文件并处理每个键,我采用递归方法:
def GetData(data):
for item in data:
print(item)
GetData(item)
with open(yaml_file_path) as file:
data = yaml.load(file, Loader=FullLoader)
GetData(data)
它进入无限递归并因错误而崩溃。
请帮忙解决一下。
好吧,这是一个递归遍历的例子。除了词典之外,您还可以查看列表。它们至少由一个元素组成,但是哪里能保证不会出现多个元素的列表呢?因此,我从头开始对列表元素进行编号。
输出是元组,您可以将它们放入所需的形式:
PS 你的代码正在循环,因为它首先迭代根字典的键,然后将这些键本身作为集合迭代 - 一次一个字符,然后将每个这样的字符作为集合迭代,就是这样,然后是这个字符会无限重复,因为集合如何作为同一字符再次迭代。