在文本文件中使用Python存储数据

时间:2017-08-03 05:16:49

标签: python database python-3.x storage storing-data

已经提出了类似的问题,但没有一个像这样。

我需要在文本文件中保存2条信息,用户名及其相关的健康整数。现在我需要能够查看文件并查看用户,然后查看与之相关的值。在我第一次使用open('text.txt','a')将新用户和整数附加到txt文件的末尾时写它。

我的主要问题是,如何确定哪个值连接到用户字符串?如果他们在同一行,我可以做一些事情,比如只阅读该行中的数字吗?

你们这些人的建议是什么?如果这些都不起作用,我想我需要转移到json。

3 个答案:

答案 0 :(得分:0)

This可能是您正在寻找的内容。我建议一次读一行来解析文本文件。

另一种方法是使用类似text_data.split("\n")的内容来读取整个txt和单独的字符串,如果数据由行分隔(由' \ n'表示),则应该有效。

答案 1 :(得分:0)

您可能正在寻找专为此而设计的configparser

构建新配置

>>> import configparser
>>> config = configparser.ConfigParser()
>>> config.sections()
[]
>>> config['Players'] = {
...     "ti7": 999,
...     "example": 50
... }
>>> with open('example.cfg', 'w') as fh:
...     config.write(fh)  # write directly to file handler
...

现在回读

>>> import configparser
>>> config = configparser.ConfigParser()
>>> config.read("example.cfg")
['example.cfg']
>>> print(dict(config["Players"]))
{'ti7': '999', 'example': '50'}

检查书面文件

% cat example.cfg
[Players]
ti7 = 999
example = 50

答案 2 :(得分:0)

如果您已在每行中以key value格式编写了文本配置,则可以按如下方式解析配置文件:

user_healths = {}                              # start empty dictionary
with open("text.txt", 'r') as fh:              # open file for reading
    for line in fh.read().strip().split('\n'): # list lines, ignore last empty
        user, health = line.split(maxsplit=1)  # "a b c" -> ["a", "b c"]
        user_healths[user] = int(health)       # ValueError if not number

请注意,这会使用户的健康状况成为text.txt中列出的最后一个值(如果它多次出现),如果您总是附加到该文件,这可能是您想要的

% cat text.txt
user1 100
user2 150
user1 200

解析text.txt以上:

>>> print(user_healths)
{'user1': 200, 'user2': 150}