我是python和YAML的新手,我有一个情况,我需要保留这个文件,附加相关的数据
__blocks: {}
messages:
CANMessages:
- CAN: !!python/unicode 'IuK-CAN'
D0:
- 13
D1:
- 0
D2:
- 0
D3:
- 0
D4:
- 0
D5:
- 0
D6:
- 240
D7:
- 0
DL: 7
Description: !!python/unicode 'clo'
ID: 574
Period: -1
id: d3206970-20f2-11e6-bfd7-185e0fc5ec33
timestamp: 1464013797.767
- CAN: !!python/unicode 'IuK-CAN'
D0:
- 13
D1:
- 0
D2:
- 0
D3:
- 0
D4:
- 0
D5:
- 0
D6:
- 240
D7:
- 0
DL: 7
Description: !!python/unicode 'cli'
ID: 574
Period: -1
id: d37y069700f2-11e6-bfd7-185e0fc5ec33
timestamp: 1487013797.767
MOSTMessages: []
pages: []
settings: {}
这里只需要附加的内容是从CAN到timestamp的部分
^{pr2}$这里的每个附加都是CAN的测试场景。在
我写的逻辑实际上是一次又一次地附加所有内容,我不知道如何只附加所需的块。在
data = {'__blocks': {},
'messages':
{'CANMessages':
[
{'DL': 7,
'Description': u'%s'%self.Description,
'timestamp': current_milli_time,
'D3': ['%s'%self.D3],
'Period': self.Period,
'ID': hex(self.ID),
'CAN': u'%s'%self.CAN,
'D6': ['%s'%self.D6],
'D7': ['%s'%self.D7],
'D4': ['%s'%self.D4],
'D5': ['%s'%self.D5],
'D2': ['%s'%self.D2],
'id': 'xxx-xxx-xxx-xxx',
'D0': ['%s'%self.D0],
'D1': ['%s'%self.D1]
}
],
'MOSTMessages': []},
'pages': [],
'settings': {}}
with open(fileMock, 'a') as outfile:
outfile.write( yaml.dump(data, default_flow_style=False) )
打开输出文件进行追加(
open(fileMock, 'a')
),每次写入整个数据结构。您可能根本不应该在YAML文件中使用a
,除非您希望文件中包含多个文档。在将所有元素附加到数据结构
data
,然后用以下命令写出:(注意
'w'
参数是open()
或者,您可以一次读取append,但必须将YAML读回
data
,最好是使用ruamel.yaml.round_trip_load()
来保存键顺序和布局,在正确的位置追加新数据,然后转储到YAML文件(同样使用open(fileMock, 'w')
而不是open(fileMock, 'a')
)相关问题 更多 >
编程相关推荐