将登录数据从文本文件读入字典错误

时间:2017-09-05 14:55:14

标签: python-3.x file dictionary

使用此链接上显示的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)

我有一个问题,我非常感谢双重答案

  1. 如图所示,将文件内容读入字典的最佳和最有效的方法是什么,并注意它已经以字典格式存储。

  2. 有没有办法写字典使这个“阅读”更容易?我在第一时间写入userinfo.txt文件的代码如下所示

  3. 编写代码

     with open("userinfo.txt","a",newline="")as fo:
                                   writer=csv.writer(fo)
                                   writer.writerow([{username:password}])
    

    请问任何答案请尝试以下

    1. 使用原始代码

    2. 提供错误解决方案
    3. 建议做同样事情的最佳方法(最简单的教学目的)注意,我不希望使用pickle,json或除了非常基本的文件处理之外的任何东西(所以只能从文本文件中读取或csv读/写工具)。例如,最好将文件内容读入列表然后将列表转换为字典吗?或者还有其他方法吗?

    4. 是否有使用csv reader或其他基本txt文件处理将字典写入文本文件的方法,以便在另一端更有效地将文件内容读入字典。 / p>

    5. 更新

      删除空白行,代码有效但产生错误输出:

      {"{"Vjr':": "'open123'}", "{'mvj':": "'mvv123'}"}
      

      我认为我需要理解 拆分和剥离命令以及如何在此上下文中使用它们来产生所需的结果(将内容读入字典userinfo)

2 个答案:

答案 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

如果您希望能够手动编辑文本文件,这种简单的格式可能是最好的,我希望尽可能保持简单。 ;-)