2017-08-19 3 views
0

i ein Programm mache, wo der Benutzer einen Student aus student.txt in eine neue TXT-Datei mit einem Ausgang wie dieser diesenPython Datei jedes Mal überschreibt ich eine neue Zeile hinzugefügt

hinzufügen kann, ist mein Gehalt an Schülern .txt

201707001 Michael_Tan 
201707002 Richard_Lee_Wai_Yong 
201707003 Jean_Yip 
201707004 Mark_Lee 
201707005 Linda_Wong 
201707006 Karen_Tan 
201707007 James_Bond 
201707008 Sandra_Smith 
201707009 Paul_Garcia 
201707010 Donald_Lim 

dies ist mein Code

from pathlib import Path 
home = str(Path.home()) 

def askModule(): 
    module = input("Enter the module that you want to register to: ") 
    print("Who you want to register into the module?\n\n") 
    studentNumber = input("Enter student number: ") 
    studentName = input("Enter student name: ") 
    with open(home + "\\Desktop\\PADS Assignment\\210CTStudentModule.txt", "w") as f: 
     with open(home + "\\Desktop\\PADS Assignment\\Student.txt", "r") as f1: 
      for line in f1: 
       stdId, stdName = line.strip().split(" ", 1) 
       if studentNumber == stdId: 
        if studentName == stdName: 
         f.write(module + " " + stdId + " " + stdName) 
         break 
      else: 
       print("Unsuccessful") 

askModule() 

, was ich möchte, dass meine Ausgabe

sein 0

aber die Ausgabe in war überschreiben nur eine Zeile, obwohl ich das Modul 3 Mal

Module 201707003 Jean_Yip 
+0

Sobald Sie eine Antwort gefunden haben, die funktioniert, klicken Sie bitte auf das Häkchen neben dieser Antwort, um es zu akzeptieren. Dadurch können andere Personen mit Ihrem Problem wissen, welche Lösung für Sie geeignet ist. – Adi219

Antwort

4

ändern hinzu:

with open(home + "\\Desktop\\PADS Assignment\\210CTStudentModule.txt", "w") as f:

zu:

with open(home + "\\Desktop\\PADS Assignment\\210CTStudentModule.txt", "a") as f:

Sie verwenden "w", die überschreiben s alle vorherigen Inhalte. Sie benötigen "a", die an die vorhandene Datei anfügt, ohne zu überschreiben.

Manchmal können Benutzer aus Dateien gesperrt werden, die sie öffnen und in Programmen schreiben, und dann werden diese Dateien read-only, wenn sie nicht geschlossen sind. Es ist eine gute Idee, f.close() und f1.close() am Ende Ihrer askModule() Funktion hinzuzufügen, da Sie diese Dateien nicht länger geöffnet halten müssen.

+0

danke! seit Stunden denken –

+0

Es sollte beachtet werden, dass 'mit' wird automatisch die Datei zu schließen, keine Notwendigkeit, '.close()' auf sie aufzurufen –

Verwandte Themen