如何保存字典多次使用

我正在创建一个登录脚本,并将用户名和密码存储在字典中。问题是,当我第二次打开它时,它没有存储已经注册的用户。我知道这很正常,但有什么办法可以绕过它吗?也许用的是文件?
注意:我在Stackoverflow上问了这个问题,但没有得到回答,所以我在问。这就是为什么我要用泡菜。
以下是我的代码:

选择 | 换行 | 行号
  1. import os
  2. import sys
  3. users={}
  4. status=""
  5.  
  6. def login():
  7.     status=raw_input("Are you a new user?")
  8.     if status=="y"
  9.         createnewuser=raw_input("Create username: ")
  10.         if createnewuser in users:
  11.             print "User already exists!"
  12.         else createpsswrd=raw_input("Create new password")
  13.             users[createnewuser]=createpsswrd 
  14.             print "Register successful!"
  15.     elif status == "n":
  16.         login=raw_input("Username: ")
  17.         passw=raw_input("Password: ")
  18.         if login in users and users[login]==passw:
  19.             print "Login successful!"
  20.             os.system("python file.py")
  21.             return
  22.         else:
  23.             print "Username and password do not match."
  24. try:
  25.     with open('file') as infile:
  26.         cPickle.load(infile)
  27. except:
  28.     users = {}
  29.  
  30. while status != "q":
  31.     login()
  32.  
  33. with open('file') as outfile:
  34.     cPickle.dump(users, outfile)

结果:我读完了整个脚本,没有出现错误,但输出文件中没有任何内容。词典不能跨会话保存。我在覆盆子PI 2上使用了Raspian,如果这很重要的话。

# 回答1


您不能捕获来自cickle.load()的输入。简单的例子在
Https://wiki.python.org/moin/UsingPickle
还要注意,当输出文件应该是"WB"、"WRITE"、"BINARY"时,您可以将输出文件作为读/输入文件(默认)打开。由于标题的原因,您可能没有收到任何回复。它看起来像一个代码片段(一个How to),而不是一个问题,如果您已经知道"如何保存词典",那么您甚至不需要查看线程(就像我在这里几乎做的那样)。

标签: python

添加新评论