2016-10-06 10 views
1

私は基本認証を使用するpython(3.4)コードを書いています。ユーザー名&のパスワードをテキストファイル(abc.txt)に保存しました。
ログインするたびに、コードはテキストファイルの最初の行だけを受け取ります。&は、残りの資格情報を無視して、間違った資格エラーを返します。Python 3.4はテキストファイルから複数の行を読み取らない

マイコード:

with open('abc.txt') as f: 
    credentials = [x.strip().split(':') for x in f.readlines()] 

for username, password in credentials: 

    user_input = input('Please Enter username: ') 

    if user_input != username: 

     sys.exit('Incorrect incorrect username, terminating... \n') 


    user_input = input('Please Enter Password: ') 



    if user_input != password: 

     sys.exit('Incorrect Password, terminating... \n') 



    print ('User is logged in!\n') 

abc.txt:

Sil:xyz123 
smith:abc321 
+0

あなたの質問には、より具体的なタイトルを使用してください。 –

答えて

1

あなたが最初の行のみをチェックしているので、何が起こっています。現在、ユーザーはテキストファイルの最初の行と一致する資格情報のみを入力できます。そうでない場合、プログラムは終了します。ユーザー名とパスワードを使用して辞書を作成し、資格情報のリストを反復するのではなく、その辞書にユーザー名が含まれているかどうかを確認する必要があります。

with open('abc.txt') as f: 
    credentials = dict([x.strip().split(':') for x in f.readlines()]) # Created a dictionary with username:password items 

username_input = input('Please Enter username: ') 

if username_input not in credentials: # Check if username is in the credentials dictionary 

     sys.exit('Incorrect incorrect username, terminating... \n') 

password_input = input('Please Enter Password: ') 

if password_input != credentials[username_input]: # Check if the password entered matches the password in the dictionary 

     sys.exit('Incorrect Password, terminating... \n') 

print ('User is logged in!\n') 
+0

@SmithPereiraいかなる問題はありますか? –

+0

こんにちはファーハン、+おかげで多くのバディー! – Von

+0

私の前のコメントについて申し訳ありません、そのうまく動作します! – Von

関連する問題