我在python 3.5上创建了一个程序,你可以找到链接到用户名的密码,为现有用户创建一个新密码,然后在字典中添加一个新的用户和密码,然后每次加载程序所有用户名和密码都在那里。
出现的错误是在您创建pickle文件(第一次运行它之后)然后在第6行出现错误
AttributeError: Can't get attribute 'NewPass' on <module '__main__' (built-in)>
发生。
这是我的剧本:
import sys
import pickle
import os
if os.path.exists("branston.p"):
LOGG = pickle.load(open('branston.p', 'rb'))
else:
LOGG = {'Sam': ('CHRIST')}
def Find():
Username = input("Say a Username.")
print (LOGG[Username])
def NewPass():
Username = Input("Enter your username.")
Newpass = input("Enter your new password")
if NewPass == input("Confirm password"):
LOGG[Username] = (NewPass)
def NewEntry():
NewUser = input("Enter your new username.")
Newpass = input("Enter your new password.")
LOGG[NewUser] = (NewPass)
loop = True
while loop == True:
function = input("Say what you want me to do.'Find', 'NewPass', 'NewEntry', 'Stop'.")
if function == ("Find"):
Find()
elif function == ("NewPass"):
NewPass()
elif function == ("NewEntry"):
NewEntry()
elif function == ("Stop"):
f = open('branston.p', 'wb')
pickle.dump(LOGG, f)
f.close()
sys.exit()
任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
当你这样做时
LOGG[NewUser] = (NewPass)
您正在为函数条目NewPass
分配函数。您可能打算分配密码字符串,因此它应该是。
LOGG[NewUser] = Newpass
注意:括号是多余的。我还建议避免使用大写字母作为变量名的第一个字符,否则很容易混淆变量和函数名称。