2017-02-16 3 views
1

Grundsätzlich möchte ich versuchen, ein System zu machen, wo, wenn Sie Ihre ID-Nummer eingeben, und es erneut mit der gleichen Nummer, sollte es einen Fehler zeigen. Ich habe versucht, online nach Lösungen zu suchen, aber ich konnte einfach keine finden, die tatsächlich funktionieren würden. Dies ist der Code, den ich bisher gemacht habe:So finden Sie Dubletten in der Datei

import sys 
N = 0 
while N < 2: 
    ID = input("Please input ID code ") 
    if (len(ID)) == 6: 
     with open('ID1.txt', 'a') as file: 
      file.write(ID + ' ') 
      file.write('\n') 
     N += 1 
     print("ID length: Valid") 
    else: 
     print("ID Code: Error") 
     sys.exit() 

Hat jemand irgendwelche Ideen, wie es geht?

+1

müssen Sie die bereits verwendeten IDs speichern. Zum Beispiel in einer Liste. Überprüfen Sie dann, ob es bereits in der Liste ist. – pawelty

+0

Sie möchten einen Fehler ausgeben, wenn die ID zum zweiten Mal eingegeben wurde, dh gleich dem ersten Mal oder wenn die eingegebene ID bereits in der Datei enthalten ist? – Lex

+0

Sie können ein Set verwenden, um die IDs zu speichern. Für kleine ID-Nummern gibt es keinen nennenswerten Unterschied in der Zugriffszeit, aber Sie haben mehrere Millionen IDs. das Set wäre schneller –

Antwort

0

Der einfachste Weg, mit Ihrem Code, ist die Textdatei zu laden, teilen sie in ihre IDs durch die Spaltung von Newline, dann, ob Sehen die ID in dieser neuen Liste ist:

N = 1 
while N <= 2: 
    input_id = input('Type your ID: ') 

    assert input_id == 6, 'Invalid ID length' 

    with open('IDs.txt', 'r+') as ids: 
     id_list = ids.read().split('\n') 
     if input_id in id_list: 
      print('This ID already exists') 
      N += 1 
      continue 
     else: 
      ids.write('\n'+input_id) 
      print('valid ID') 
      break 

Aber der Reiniger Weg ist es, es mit einer JSON-Datei zu tun. Auf diese Weise können Sie die Liste direkt laden, und es wird weniger Chancen auf Formatierungsfehler

import json 

N = 1 
while N <= 2: 
    file = open('IDs.json', 'r') 
    ids = json.load(file) 
    file.close() 

    input_id= input('enter your ID:') 
    assert input_id == 6, 'Invalid ID length' 

    if int(input_id) in ids: 
     print('This ID already exists') 
     N += 1 
     continue 
    else: 
     ids.append(int(input_id)) 
     json.dumps('IDs.json', ids) 
     print('ID accepted') 
     break 
0

Im Folgenden Code überprüft, wenn die ID in der Datei vorhanden ist, wenn nicht, geht 2 Eindeutige IDs in die Datei

N = 0 
while N < 2: 
    ID = raw_input("Please input ID code ") 
    if (len(ID)) == 6: 
     with open('ID1.txt', 'a+') as f: 
      if not any(ID == x.rstrip('\r\n') for x in f): 
       f.write(ID + '\n') 
       N += 1