我有一个YAML文件,我想在我的游戏中存储不同的“玩家”。在
YAML文件如下所示:
Person:
Name:
Age:
Nationality:
Footed:
Position:
创建播放器后,YAML文件应该如下所示:
^{pr2}$到目前为止,我的代码是这样的:
import yaml
name = input('What is your name? ')
age = int(input('What is your age? '))
nationality = input('What is your nationality? ')
footed = input('What foot? ')
position = input('What is your position? ')
with open('test.yml', 'a') as outfile:
outfile.write(yaml.dump({'Name' : name, 'Age' : age, 'Nationality' : nationality,
'Footed' : footed, 'Position' : position}))
但是当我运行这个程序并给用户输入时,yaml文件的结果是:
{Age: 2, Footed: r, Name: r, Nationality: r, Position: r}
如何让它添加到YAML文件而不是append,以及如何垂直而不是水平地构建它?最后,如果我想添加10/20/n的玩家数量,我希望YAML文件将他们一个一个地存储在另一个之下,这样我就可以单独地调用每个玩家
当您像这样写出YAML时,首先将数据结构写入内存中的文件,然后以字符串形式检索内存文件内容,然后将其写入文件。这是低效和缓慢的。在
您还应该读入您拥有的YAML文件,更新数据结构并将其转储:
default_flow_style
参数确保键值对列在彼此下面。在使用PyYAML,infile中的任何注释都将丢失,映射中键的顺序可能会被打乱。如果这是一个问题,我建议你使用拉梅尔亚姆勒包(免责声明:我是该包的作者),并将代码更改为:
^{pr2}$如果你想存储多个玩家。确保您的顶层数据结构是一个序列,或者是从某个唯一值(例如人名)映射而来的。在这种情况下,使用不同的输入文件作为模板,并通过读入并附加到列表cq来更新输出文件。更新dict并写出文件。只要名称是唯一的,那么使用顶级映射/dict就更容易做到这一点
"w"
,而不是"a"
打开文件。在Person
。在default_flow_style=False
。在代码:
输出
^{pr2}$你可以这样做:
相关问题 更多 >
编程相关推荐