首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用python向yaml文件添加新行/更新数据?

如何使用python向yaml文件添加新行/更新数据?
EN

Stack Overflow用户
提问于 2020-12-29 03:12:14
回答 1查看 779关注 0票数 1

我想更新我的.yaml文件,并在每次迭代中添加到我的.yaml文件中,而以前的数据还在保存中,下面是我的代码:

代码语言:javascript
运行
复制
import yaml

num=0
for i in range(4):
    num +=1    
    data_yaml =[{"name" : num,  "point" : [x, y , z]}]

    with open('points.yaml', 'w') as yaml_file:
        yaml.dump(data_yaml, yaml_file)  

这是我想在points.yaml文件中实现的目标输出结果:

代码语言:javascript
运行
复制
- name: 1
  point: [0.7, -0.2, 0.22]
- name: 2
  point: [0.6, -0.11, 0.8]
- name: 3
  point: [0.4, -0.2, 0.6]
- name: 4
  point: [0.3, -0.7, 0.8]
- name: 5
  point: [0.1, -0.4, 0.2]

如何在.yaml文件中添加或自动添加以前的数据之外的新行?

EN

Stack Overflow用户

回答已采纳

发布于 2020-12-29 07:04:11

在预期的输出中,根级数据结构是一个序列。在Python程序中,应该从空列表开始。(如果您不知道这一点,那么最简单的方法就是手工构建的YAML文档.load,看看它是如何作为数据结构Python的。)

您不仅使用了Python版本的EOL,而且还使用了ruamel.yaml的旧(兼容性)例程。如果无法更改前者,至少开始使用新的ruamel.yaml API:

代码语言:javascript
运行
复制
from __future__ import print_function

import sys
import ruamel.yaml

points = [
  [0.7, -0.2, 0.22],
  [0.6, -0.11, 0.8],
  [0.4, -0.2, 0.6],
  [0.3, -0.7, 0.8],
  [0.1, -0.4, 0.2],
]

data = []

yaml = ruamel.yaml.YAML(typ='safe')

num=0
for i in range(5):
    num +=1
    x, y, z = points[i]
    data.append({"name" : num,
    "point" : [x, y , z ]
    })

    with open('points.yaml', 'w') as yaml_file:
         yaml.dump(data, yaml_file)

with open('points.yaml') as yaml_file:
    print(yaml_file.read())

这意味着:

代码语言:javascript
运行
复制
- name: 1
  point: [0.7, -0.2, 0.22]
- name: 2
  point: [0.6, -0.11, 0.8]
- name: 3
  point: [0.4, -0.2, 0.6]
- name: 4
  point: [0.3, -0.7, 0.8]
- name: 5
  point: [0.1, -0.4, 0.2]

请注意,我将参数更改为range()为5。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65486875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档