2016-10-09 63 views
0

我已經在python 3.5上製作了一個程序,您可以找到鏈接到用戶名的密碼,爲現有用戶創建一個新密碼,並向該用戶添加一個新密碼字典然後pickles它,所以每次我加載程序所有的用戶名和密碼將在那裏。'AttributeError:'當我試圖取出字典時

,來了的錯誤是你創建的鹹菜文件,然後在第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() 

任何幫助,將不勝感激。謝謝!

+3

Python區分大小寫。 「Newpass」與「NewPass」不同。 – Kevin

+3

不要將您的變量命名爲您的函數。它看起來像你醃一個功能。 – zvone

+0

請查看[PEP8](https://www.python.org/dev/peps/pep-0008/)。通過適當的命名約定,這個錯字很容易被發現。 – MisterMiyagi

回答

2

當你做到這一點

LOGG[NewUser] = (NewPass) 

您分配功能NewPass你的字典項。您可能打算分配密碼字符串,因此它應該是。

LOGG[NewUser] = Newpass 

注:括號是多餘的。我還建議避免使用大寫字母作爲變量名的第一個字符,否則容易混淆變量名和函數名。

相關問題