如何解决如何使用python向yaml文件添加新行/更新数据?
我想更新我的 .yaml 文件,并在每次迭代中将新数据添加到我的 .yaml 文件中,同时仍保存以前的数据,这是我的一段代码:
#include<stdio.h>
int main(){
int m[20][20],a[400],c=0;//max dimensions;
scanf("%d %d",&M,&N);//dimensions of matrix;
for(i=0;i<M;i++{
for(j=0;j<N;j++{
scanf("%d",&m[i][j]);
for(c=0;c<M*N;c++)
a[c]=m[i][j];
}}}
这是我想要在我的 points.yaml 文件中实现的目标输出结果:
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)
如何在 .yaml 文件中的先前数据旁边自动附加或添加新行?
解决方法
在预期的输出中,您的根级数据结构是一个序列。在你的
因此,您应该从一个空列表开始 Python 程序。 (如果你没有
知道这一点,最简单的方法是 .load
您使用的 YAML 文档
手工制作,看看它如何最终成为数据结构 Python。)
您似乎不仅使用的是 EOL 的 Python 版本,而且还很旧 ruamel.yaml 的(兼容性)例程。如果你不能改变前者,在 至少开始使用新的 ruamel.yaml API:
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.6],[0.3,-0.7,[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,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())
给出:
- name: 1
point: [0.7,0.22]
- name: 2
point: [0.6,0.8]
- name: 3
point: [0.4,0.6]
- name: 4
point: [0.3,0.8]
- name: 5
point: [0.1,0.2]
请注意,我将参数 range()
更改为 5。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。