当前位置:  开发笔记 > 编程语言 > 正文

将dict写入文件,每个键/值对在单独的行中

如何解决《将dict写入文件,每个键/值对在单独的行中》经验,为你挑选了1个好方法。

我目前正在用Python编写帐户注册程序。该程序使用一个名为的文件players,该文件中写入了一个字典,字典中包含与玩家用户名相对应的键,以及其他信息(电子邮件,密码,年龄和性别)作为与相应键相关联的数组。

accounts字典的定义是如此取决于是否players文件存在,它是空的。

def is_file_empty(filename):
    return os.stat(filename).st_size == 0

def create_file(filename, mode = 'w'):
    f = open(filename, mode)
    f.close()

if os.path.exists('players'):
    with open('players', 'r') as f:
        if is_file_empty('players'):
            accounts = {}
        else:
            accounts = ast.literal_eval(f.read())
else:
    create_file('players')
    accounts = {}

然后使用Player类内部的函数将其写入文件。

def write(self):
        accounts[self.name] = [self.email, self.password, self.age, self.gender]
        with open('players', 'w') as f:
            f.write(accounts)

它工作正常,但是由于编写方式的原因,它始终只占一行。我想尝试在字典中的每一行上编写每个键/值对,但是我完全不知道如何实现这一点。

我该怎么办?



1> deceze..:

如果我建议使用其他方法,请使用现有的简单序列化方案(如JSON或YAML),而不要手动滚动自己的序列化方案:

import json

try:
    with open('players.json', 'r') as file:
        accounts = json.load(file)
except (OSError, ValueError):  # file does not exist or is empty/invalid
    accounts = {}

# do something with accounts

with open('players.json', 'w') as file:
    json.dump(accounts, file, indent=2)

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有