已经提出了类似的问题,但没有一个像这样。
我需要在文本文件中保存2条信息,用户名及其相关的健康整数。现在我需要能够查看文件并查看用户,然后查看与之相关的值。在我第一次使用open('text.txt','a')将新用户和整数附加到txt文件的末尾时写它。
我的主要问题是,如何确定哪个值连接到用户字符串?如果他们在同一行,我可以做一些事情,比如只阅读该行中的数字吗?
你们这些人的建议是什么?如果这些都不起作用,我想我需要转移到json。
答案 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}