Próbuję utworzyć GUI logowania dla Pythona. Zrobiłem już funkcję rejestru, która zapisuje nazwę użytkownika i hasła w 2 różnych plikach. W tej chwili ustawiłem to tak, aby każda linia obu plików odpowiadała sobie nawzajem. Teraz muszę przeczytać oba pliki, aby się zalogować.

with open("Users.txt", "r") as user_file:
   with open("Passwords.txt", "r") as pass_file:
   compare = set(user_file).intersection(pass_file)
0
Eric Quan 20 listopad 2019, 06:41
Jakie są twoje dane pliku?
 – 
DustyPosa
20 listopad 2019, 06:45
Zapisywanie danych w różnych plikach jest szalone. Wydaje się, że to powtarzające się zadanie domowe, może powiedz nam, który kurs bierzesz, aby inni mogli tego uniknąć?
 – 
tripleee
20 listopad 2019, 07:56

2 odpowiedzi

each line of both files correspond with each other

Nie szukasz zestawu. Szukasz dyktanda.

(zakładając, że dane plików są oddzielone znakami nowej linii)

logins = {k.strip(): v.strip() for k, v in zip(user_file, pass_file)}

Następnie zakładam, że porównujesz, czy dane hasło pasuje do tego zapisanego, użyj:

if pass_attempt == logins[username]:
    #Correct
else:
    #fail
0
Jab 20 listopad 2019, 07:05

Jeden schemat logowania przy użyciu plików użytkownika i hasła

def check_login(user_name, password):
  " Checks if user_name and password are in their corresponding files "
  with open("Users.txt", "r") as user_file,  open("Passwords.txt", "r") as pass_file:
    for user, passwd in zip(user_file, pass_file):
      # Check each line in corresponding file for match
      if user.rstrip() == user_name and passwd.rstrip() == password:
        return True
    else:
      return False

print(check_login('daffy', 'duck')) # True
print(check_login('daffy', 'ducky')) # False
print(check_login('oliver', 'twist')) # True
print(check_login('oliver', 'duck'))  #File

Pliki wejściowe

Users.txt

daffy
micky
donold
oliver
minnie

Passwords.txt

duck
mouse
duck
twist
mouse
0
DarrylG 20 listopad 2019, 07:25