2017-10-13 3 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)과 거의 중복되는 질문입니다. 일단 당신이 줄을 사용하여 두 필드를 분리하십시오. 공간 대신 ​​구분 기호로 탭을 사용하는 것이 좋습니다. –

+0

로그인 기능이 어떤 결정을 내릴지 결정해야합니다. 로그인이 성공하면 무엇이든 ... 당신이 그것을 알아야만한다면'True' 또는'False'를 반환하기를 원할 것입니다. – efkin

+0

파일 ** check **을 읽고 각 줄을 별도의 단어로 분리 한 다음 입력 된 사용자 이름과 암호와 비교해야합니다. 파일 끝에 도달하거나 일치하는 사용자 이름을 찾을 때까지 한 줄씩 계속하십시오. – Prune

답변

1

파일을 연 후, 당신은 사용자 이름/암호 쌍의 목록에 텍스트를 읽을 readlines()를 사용할 수 있습니다. 공백으로 사용자 이름과 암호를 구분 했으므로 각 쌍은 인 문자열이며 split() 인 두 개의 문자열 목록으로 나눌 수 있습니다. 거기에서 사용자 이름과 암호가 사용자 입력과 일치하는지 확인하십시오. 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 파일이 커지면서 작동 할 것입니다. –

관련 문제