2017-10-13 15 views
0

私はユーザーがアカウントに登録してログインする必要があるプログラムを作成しています。私は、ユーザーが外部のテキストファイル(accountfile.txt)に保存され、ユーザー名とパスワードを作る持ってプログラムを取得し、それがログインに来るとき、私はどのようにチェックするプログラムを取得するには考えている場合はどのようなユーザ入力テキストファイルに存在します。ユーザー名とパスワードのテキストファイルを確認する方法

これはコードの私のビットは、次のようになります。

def main(): 
    register() 

def register(): 
    username = input("Please input the first 2 letters of your first name and your birth year ") 
    password = input("Please input your desired password ") 
    file = open("accountfile.txt","a") 
    file.write(username) 
    file.write(" ") 
    file.write(password) 
    file.close() 
    login() 

def login(): 
    check = open("accountfile.txt","r") 
    username = input("Please enter your username") 
    password = input("Please enter your password") 

私はこの時点から、何をすべきか見当がつかない。

また、これは、登録されたアカウントは、テキストファイルでどのように見えるかです:

Ha2001 examplepassword 
+0

[この質問](https://stackoverflow.com/questions/1904394/read-only-the-firstline-of-a-file)とほぼ重複しているようです。一度、ラインを分割して2つのフィールドを区切りにします。スペースの代わりにタブをセパレータとして使用することをお勧めします。 –

+0

ログイン機能が何をすべきかについていくつかの決定をする必要があります。もしログインが成功すれば 'True'か' False'を返したいと思うかもしれません。 – efkin

+0

ファイル**チェック**を読み、各行を別々の単語に分割し、それらを入力されたユーザー名とパスワードと比較する必要があります。ファイルの終わりまで、または一致するユーザー名を見つけるまで、行単位で続行します。 – Prune

答えて

1

ファイルを開いた後、ユーザー名/パスワードのペアのリストにテキストを読むためにreadlines()を使用することができます。スペースでユーザー名とパスワードを分けたので、各ペアは'Na19XX myPassword'のような文字列で、split()という2つの文字列のリストに分割できます。そこから、ユーザー名とパスワードがユーザー入力と一致するかどうかを確認します。あなたのTXTファイルが増えるにつれ、複数のユーザーが必要な場合は、各ユーザー名とパスワードのペアの後に改行を追加する必要があります。

def register(): 
    username = input("Please input the first 2 letters of your first name and your birth year ") 
    password = input("Please input your desired password ") 
    file = open("accountfile.txt","a") 
    file.write(username) 
    file.write(" ") 
    file.write(password) 
    file.write("\n") 
    file.close() 
    if login(): 
     print("You are now logged in...") 
    else: 
     print("You aren't logged in!") 

def login(): 
    username = input("Please enter your username") 
    password = input("Please enter your password") 
    for line in open("accountfile.txt","r").readlines(): # Read the lines 
     login_info = line.split() # Split on the space, and store the results in a list of two strings 
     if username == login_info[0] and password == login_info[1]: 
      print("Correct credentials!") 
      return True 
    print("Incorrect credentials.") 
    return False 
+0

あなたのソリューションは、動作しているようですが、唯一のテキストファイルに追加の非常に最初のアカウントのために、私は複数のアカウントのために、この作業をする必要があります。その場合は – OSG

+0

ああ、あなたは、各ユーザ名/パスワードの組み合わせの後に改行文字( ' '\ n'')を挿入する必要があります。私は上記のtxtファイルが増えるにつれて動作するはずです。 –