擅长:python、mysql、java
<p>当您像这样写出YAML时,首先将数据结构写入内存中的文件,然后以字符串形式检索内存文件内容,然后将其写入文件。这是低效和缓慢的。在</p>
<p>您还应该读入您拥有的YAML文件,更新数据结构并将其转储:</p>
<pre><code>import yaml
file_name = 'test.yml'
with open(file_name) as infile:
data = yaml.load(infile)
person = data['Person']
person['name'] = input('What is your name? ')
person['age'] = int(input('What is your age? '))
person['nationality'] = input('What is your nationality? ')
person['footed'] = input('What foot? ')
person['position'] = input('What is your position? ')
with open(file_name, 'w') as outfile:
yaml.dump(data, stream=outfile, default_flow_style=False, indent=3)
</code></pre>
<p><code>default_flow_style</code>参数确保键值对列在彼此下面。在</p>
<p>使用PyYAML,infile中的任何注释都将丢失,映射中键的顺序可能会被打乱。如果这是一个问题,我建议你使用拉梅尔亚姆勒包(免责声明:我是该包的作者),并将代码更改为:</p>
^{pr2}$
<p>如果你想存储多个玩家。确保您的顶层数据结构是一个序列,或者是从某个唯一值(例如人名)映射而来的。在这种情况下,使用不同的输入文件作为模板,并通过读入并附加到列表cq来更新输出文件。更新dict并写出文件。只要名称是唯一的,那么使用顶级映射/dict就更容易做到这一点</p>