Python操作yaml:加载与持久化

1 下载量 87 浏览量 更新于2024-08-29 收藏 130KB PDF 举报
"这篇文档介绍了如何在Python中使用PyYAML库来操作YAML文件,包括安装PyYAML、加载YAML文件以及将字典数据持久化到YAML文件的过程。" 在Python中,YAML(YAML Ain't Markup Language)是一种常用的数据序列化格式,常用于配置文件和数据交换。为了在Python中处理YAML,我们需要首先安装PyYAML库,可以通过`pip`命令来完成: ```bash pip install PyYAML ``` 安装完成后,可以使用PyYAML提供的`yaml.load()`函数来加载YAML文件。下面是一个简单的例子,展示了如何加载名为`demo.yml`的YAML文件: ```python import yaml with open('demo.yml', 'r') as f: result = yaml.load(f) print(result) ``` 在`demo.yml`文件中,有一个Kubernetes的Deployment配置,包含`kind`、`apiVersion`、`metadata`、`spec`等字段。`yaml.load()`函数会将YAML内容解析成Python字典结构。 ```yaml # demo.yml kind: Deployment apiVersion: apps/v1 metadata: name: podinfo namespace: yaml-demo spec: replicas: 1 selector: matchLabels: app: podinfo template: metadata: labels: app: podinfo spec: containers: - name: podinfod image: quay.io/stefanprodan/podinfo:0.3.0 ports: - containerPort: 9898 ``` 在Python脚本中,我们可以通过以下方式将加载的内容打印出来: ```python import json # 将结果转换成JSON格式,便于查看 print(json.dumps(result, indent=2)) ``` 此外,PyYAML还提供了`yaml.safe_dump()`函数,用于将Python字典数据持久化到YAML文件中。例如: ```python d = { "kind": "Deployment", "spec": { "replicas": 1, "template": { "spec": { "containers": [ { "image": "quay.io/stefanpro", # ... } ] }, "metadata": { "labels": { "app": "podinfo" } } }, "selector": { "matchLabels": { "app": "podinfo" } } }, "apiVersion": "apps/v1", "metadata": { "namespace": "yaml-demo", "name": "podinfo" } } with open('output.yml', 'w') as f: yaml.safe_dump(d, f, default_flow_style=False, allow_unicode=True) ``` 这将在当前目录下创建一个名为`output.yml`的文件,内容与`demo.yml`相同。`default_flow_style=False`参数使得输出的YAML格式更易读,`allow_unicode=True`允许在YAML文件中使用Unicode字符。 总结来说,Python操作YAML文件主要涉及安装PyYAML库,使用`yaml.load()`加载YAML文件,以及使用`yaml.safe_dump()`将Python对象序列化为YAML格式。这些操作在处理配置文件、数据存储和交换时非常有用。