Как я могу проверить, есть ли строка в текстовом файле?(Python) - PullRequest
0 голосов
/ 20 декабря 2018

Я делаю проект для школы - и как его часть, мне нужно проверить, сохранено ли их имя пользователя в текстовом файле:

def checkUsername():
    userName = str(input("WHAT IS YOUR NAME?"))
    if userName in usernames.read():
        print("WELCOME BACK" + userName)
        print("LET\'S GET STARTED")
        return False
    else:
        usernames.write(userName)
        print("WELCOME TO THE SYSTEM!")
        return False

Несмотря на мои усилия по решению этой проблемы, яне могу понять это.Кто-нибудь может помочь?

Ответы [ 3 ]

0 голосов
/ 20 декабря 2018

Чего вам не хватает, так это первого открытия файла для чтения:

def checkUsername():
    userName = str(input("WHAT IS YOUR NAME?"))
    with open("usernames.txt", 'r') as usernames:    
        if userName in usernames.read():
            print("WELCOME BACK" + userName)
            print("LET\'S GET STARTED")
            return False
        else:
            usernames.write(userName)
            print("WELCOME TO THE SYSTEM!")
            return False

с открытым открывает файл по указанному пути (измените usernames.txt на полный путьfile) и 'r' означает, что файл должен быть открыт с разрешениями на чтение.Обычно это выгодно при использовании метода python open (), который требует, чтобы вы закрывали () файл, когда закончили его читать.

Примечание: обратите внимание, что вы вернули False при обоих условиях вашей функции.

0 голосов
/ 20 декабря 2018

Одна проблема, связанная с этой функцией, заключается в том, что usernames не определена, а другая заключается в том, что оба конца блока if вернут False.

. Одним из способов решения этих проблем будет

def checkUsername(usernames_file):
    fp = open(usernames_file, 'r')  # the default mode is 'r', but it's explicit here
    usernames = fp.read()

    userName = str(input("WHAT IS YOUR NAME?"))
    if userName in usernames:
        print("WELCOME BACK" + userName)
        print("LET\'S GET STARTED")
        fp.close()
        return True  # note, not False
    else:
        fp.write(userName)
        print("WELCOME TO THE SYSTEM!")
        fp.close()
        return False

Этот фрагмент отличается по нескольким причинам, но он также игнорирует две вероятные ошибки, с которыми вы также можете столкнуться: чувствительность к регистру на входах (строка input(...) может быть любой, которую хочет пользователь),и разделение строк в usernames_file.Надеюсь, это подтолкнет вас в правильном направлении.

0 голосов
/ 20 декабря 2018

т.е.:

def checkUsername(user):
    if user.strip():
        with open("myfile") as users:
            print(f"WELCOME BACK {user}\nLET'S GET STARTED") if user in users.read() else print(f"WELCOME TO THE SYSTEM!")
    else:
        print("Error: empty username")

user = input("WHAT IS YOUR NAME?")
checkUsername(user)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...