1. 程式人生 > >登入、註冊、刪除小練習

登入、註冊、刪除小練習

#編寫過程中遇到的問題:

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 14-15: truncated \uXXXX escape

window 讀取檔案可以用\,但是在字串中\是被當作轉義字元來使用,所以’d:\a.txt’會被轉義成’d:\a.txt’這是正確路徑,所以不會報錯。而‘E:\DSX\LX\day4\username.txt'

中經過轉義之後可能就找不到路徑的資源了,例如:\u可能轉成unicode字串了,所以導至路徑找不到報錯誤;

兩咱解決辦法:1、在路徑中加\\;2、在路徑前面加r:r'E:\DSX\LX\day4\username.txt'; 

r/R:非轉義的原始字串
與普通字元相比,其他相對特殊的字元,其中可能包含轉義字元,即那些,反斜槓加上對應字母,表示對應的特殊含義的,比如最常見的”\n”表示換行,”\t”表示Tab等。而如果是以r開頭,那麼說明後面的字元,都是普通的字元了,即如果是“\n”那麼表示一個反斜槓字元,一個字母n,而不是表示換行了。
以r開頭的字元,常用於正則表示式,對應著re模組。
---------------------
作者:SmallisBig
來源:CSDN
原文:https://blog.csdn.net/u010496169/article/details/70045895
版權宣告:本文為博主原創文章,轉載請附上博文連結!

user_info = {} #存放所有的使用者
with open('E:\DSX\LX\day4\\username.txt') as f:
    for line in f:
        # niuhanyang,123456\n
        line = line.strip()
        temp  = line.split(',')
        username = temp[0]
        pwd = temp[1]
        user_info[username]=pwd
for i in range(3):
    choice = input('
請輸入你的選擇' '1、登入 2、註冊 3、刪除').strip() if choice=='1': username = input('username:').strip() pwd = input('pwd:').strip() if username and pwd: if username in user_info: if user_info.get(username)==pwd: #get獲取的value值=pwd print('登入成功') else: print('賬號密碼錯誤!') else: print("user not found!") else: print('賬號密碼不能為空!') elif choice=='2': username = input('username:').strip() pwd = input('pwd:').strip() cpwd = input('cpwd:').strip() if username and pwd and cpwd: if username in user_info: print('該使用者已經被註冊!') else: if pwd==cpwd: user_info[username]=pwd print('恭喜,註冊成功!') print(user_info) else: print('兩次輸入的密碼不一致!') else: print('不能為空!') elif choice=='3': username = input('username:').strip() if username: if username in user_info: user_info.pop(username) print('刪除成功!') else: print('不能為空!') else: print("輸入有誤,請重新輸入") else: with open('users.txt','a+') as fw: fw.seek(0) for usname,pwd in user_info.items(): fw.write(usname+','+pwd+'\n')