“AttributeError:”当我试图解开字典时

2024-10-02 18:23:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python3.5上做了一个程序,你可以找到与用户名链接的密码,为现有用户创建一个新密码,并在字典中添加一个新的用户和密码,然后对它进行pickle处理,这样每次我加载程序时,所有的用户名和密码都会出现在那里。你知道吗

出现的错误是在创建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()

任何帮助都将不胜感激。谢谢!你知道吗


Tags: import密码inputyourifdefusernamefunction
1条回答
网友
1楼 · 发布于 2024-10-02 18:23:32

当你这么做的时候

LOGG[NewUser] = (NewPass)

您正在将函数NewPass分配给dict条目。您可能打算分配密码字符串,因此它应该是。你知道吗

LOGG[NewUser] = Newpass

注意:括号是多余的。我还建议避免使用大写字母作为变量名的第一个字符,否则很容易混淆变量名和函数名。你知道吗

相关问题 更多 >