2017-02-14 2 views
0

In unserer Klasse hatten wir die Aufgabe, im Grunde ein Programm zu erstellen, das die US-Wahlen im vergangenen Jahr nachstellt. Eine der zusätzlichen Herausforderungen ist, dass wenn Sie eine ID-Nummer eingeben, die bereits in der Datei ist, sollte es mit einem Fehler kommen und einfach aufhören. Allerdings, wenn ich versuchen, diesen Code auszuführen, kommt es mitWie melden Sie Duplikate in einem TXT an? Datei?

ValueError: I/O operation on closed file.

Dies ist der Code, den ich bisher gemacht habe ...

ID = input("Please input ID code ") 
if(len(ID)) == 6: 
    print("ID length: Valid") 
    N += 1 
else: 
    print("ID Code: Error") 
    sys.exit() 
with open('ID.txt', 'a') as idc: 
    idc.write(ID + ' ') 
already_seen = set() 
for line in idc: 
    if line not in already_seen: 
     print("Valid") 
    else: 
     print("Error") 
     sys.exit() 

Dank

Antwort

0

Sie sollten wissen, die Differenz zwischen dem

with open('ID.txt', 'a') as idc: 
    do sth 

und dem

idc = open('ID.txt', 'a') 

Im ersten Fall, nachdem die do sth beendet ist, wird die __exit__() der IDC aufgerufen, um das Dateiobjekt zu schließen.

Ich empfehle Ihnen, den zweiten Ausdruck zu verwenden, den ich oben angeben. Wenn Sie Python neu sind, hilft Ihnen diese blog die Detailgründe zu verstehen.

Verwandte Themen