2017-08-29 3 views
0

Wie kann ich überprüfen, ob die Eingabe bereits in der Textdatei vorhanden ist?wie Sie überprüfen, ob Benutzereingaben bereits in einer Textdatei vorhanden sind Python

def Database(): 

    file=open("Database.txt","a") 

    print("Welcome to Database") 
    name=input("Enter your name\n") 
    username=input("Enter your username\n") 
    password=input("Enter your password\n") 
    date=input("Enter the date\n") 

    while True: 
     if username in file(): 
      print("Already exists") 
      username=input("Enter your username\n") 
     else: 
      file.write(name) 
      file.write("\n") 
      file.write(username) 
      file.write("\n") 
      file.write(password) 
      file.write("\n") 
      file.write(date) 
      file.write("\n") 

    file.close() 

Database() 
+3

Zunächst ist 'Datei' nicht aufrufbar; Sie können jedoch davon lesen. –

+0

Sie können nicht aus 'file' lesen, wenn es' 'a'' geöffnet wurde. –

+0

Hoffentlich in einer realen Anwendung würden Sie keine Passwörter im Klartext speichern .... – C8H10N4O2

Antwort

0

Da Sie die Datei mehrmals suchen müssen, bis der Kunde einen neuen Benutzernamen eingibt, empfehle ich, dass Sie dies in Schritten zu brechen:

  1. die Datei in eine Datenstruktur Lesen Sie bequem finden , eine Art Tabelle mit Benutzernamen. Schließen Sie die Datei.
  2. Wenn der Kunde einen Namen eingibt, verwenden Sie den Operator in, um die Liste der vorhandenen Namen zu überprüfen.
  3. Sobald Sie die neuen Informationen erhalten, öffnen Sie die Datei erneut für "append", und fügen Sie die neue Information in die Datei.

Macht Sie das in Bewegung?

+0

ok danke ich werde ein Array für die Benutzernamen erstellen – tojas

1
  1. Lesen Sie die Datei von Anfang bis Ende und speichern Sie sie in einer Liste.
  2. Da Sie mehrere Male überprüfen werden, ist es besser, die gesamte Liste in einer CSV-Datei in einer einzigen Zeile zu speichern. Dies reduziert die Lesezeit.

  3. Dann überprüfen Sie einfach, ob Benutzername in CSV-Datei oder nicht.

Fügen Sie das folgende Snippet hinzu und ändern Sie entsprechend der Anforderung.

import csv 
alreadyIn=[] 

with open('data.csv', 'rb') as csvfile: 
    spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|') 
    for row in spamreader: 
     alreadyIn.append(row[0]) 

with open('data.csv', 'w+') as csvfile: 
    writer = csv.writer(csvfile, delimiter=' ',quotechar='|', quoting=csv.QUOTE_MINIMAL) 
    spamwriter.writerow([alreadyIn]) 

with open('data.csv', 'rb') as csvfile: 
    spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|') 
    for row in spamreader: 
     allData = row[0] 
if newInput in allData: 
    #your operations 
Verwandte Themen