Как исправить мой код для аутентификации внешних файлов? - PullRequest
0 голосов
/ 05 августа 2020

Я создал программу аутентификации , которая сканирует каталог на предмет файлов, содержащих содержимое, запрошенное пользователем, она работала, когда запрашивает имя пользователя, но не когда он запрашивает пароль. Я не уверен что делать? Он печатает приветствие, когда имя пользователя введено успешно , но не печатает приветствие, даже если пароль правильный

userAuthen = input("What is your username? ")
path = r"C:\Users\JOSHUA\Desktop\Python stuff\usernames"
directories = os.scandir(path)
with directories as dirs:
    for entry in dirs:
        with open(entry.path,"r") as fileUser:
            contentsUser = fileUser.read()
            if contentsUser == userAuthen:
                print("Welcome!")
                break


passAuthen = input("What is your password? ")
path = r"C:\Users\JOSHUA\Desktop\Python stuff\passwords"
directories = os.scandir(path)
with directories as dirs:
    for entry in dirs:
        with open(entry.name,"r") as filePass:
            contentsPass = filePass.read()
            if contentsPass == passAuthen:
                print("Welcome!")
                break

1 Ответ

0 голосов
/ 05 августа 2020

Ваш код, вероятно, не работал, потому что когда вы читаете файл в python с file.read(), он также включает новые разделители строк \n. Вы не видите этих разделителей, когда открываете файл в обычном текстовом редакторе. Но они есть. Когда вы используете file.read().splitlines(), вы получаете массив со всеми строками без разделителя \n.

Попробуйте следующее:

import os

userAuthen = input("What is your username? ")

path = r"C:\Users\JOSHUA\Desktop\Python stuff\usernames"
directories = os.scandir(path)

username_found = False
password_found = False

with directories as dirs:
    for entry in dirs:
        with open(entry.path, "r") as fileUser:
            contentsUser = fileUser.read().splitlines()
            for username in contentsUser:
                if username == userAuthen:
                    username_found = True
                    break

passAuthen = input("What is your password? ")
path = r"C:\Users\JOSHUA\Desktop\Python stuff\passwords"
directories = os.scandir(path)

with directories as dirs:
    for entry in dirs:
        with open(entry.path, "r") as filePass:
            contentsPass = filePass.read().splitlines()
            for password in contentsPass:
                if password == passAuthen:
                    password_found = True
                    break

if username_found and password_found:
    # Code if login was successful
    print("Welcome!")

Пожалуйста, дайте мне знать, помогло ли это. Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...