使用此链接上显示的Stack Overflow上的答案:https://stackoverflow.com/a/4804039,我试图将文件内容读入字典。有一个我似乎无法解决的错误。
代码
def login():
print("====Login====")
userinfo={}
with open("userinfo.txt","r") as f:
for line in f:
(key,val)=line.split()
userinfo[key]=val
print(userinfo)
文件内容
{'user1': 'pass'}
{'user2': 'foo'}
{'user3': 'boo'}
错误:
(key,val)=line.split()
ValueError: not enough values to unpack (expected 2, got 0)
我有一个问题,我非常感谢双重答案
如图所示,将文件内容读入字典的最佳和最有效的方法是什么,并注意它已经以字典格式存储。
有没有办法写字典使这个“阅读”更容易?我在第一时间写入userinfo.txt文件的代码如下所示
编写代码
with open("userinfo.txt","a",newline="")as fo:
writer=csv.writer(fo)
writer.writerow([{username:password}])
请问任何答案请尝试以下
使用原始代码
建议做同样事情的最佳方法(最简单的教学目的)注意,我不希望使用pickle,json或除了非常基本的文件处理之外的任何东西(所以只能从文本文件中读取或csv读/写工具)。例如,最好将文件内容读入列表然后将列表转换为字典吗?或者还有其他方法吗?
是否有使用csv reader或其他基本txt文件处理将字典写入文本文件的方法,以便在另一端更有效地将文件内容读入字典。 / p>
更新
删除空白行,代码有效但产生错误输出:
{"{"Vjr':": "'open123'}", "{'mvj':": "'mvv123'}"}
我认为我需要理解 拆分和剥离命令以及如何在此上下文中使用它们来产生所需的结果(将内容读入字典userinfo)
答案 0 :(得分:1)
让我们先从基础知识开始。错误消息:
ValueError: not enough values to unpack (expected 2, got 0)
表示行是空的,那么文件中是否有空行?
答案 1 :(得分:0)
是的,还有其他选项可以保存您的字典并将其恢复,但首先您应该了解这一点,并且可能对您有用。 :-) split()作用于你从文件中读取的字符串,默认情况下将拆分空间,这就是你所看到的。您可以将文本文件格式化为' username:pass'相反,然后使用拆分(':")。
文件内容
[logger_main]
level=DEBUG
handlers=file
qualname=__main__ ## or the __name__ attr of your .py file
propagate=0
代码
user1:pass
user2:foo
user3:boo
如果您希望能够手动编辑文本文件,这种简单的格式可能是最好的,我希望尽可能保持简单。 ;-)