Anonymer Benutzer
Wie kann man in Python an eine Datei anhängen?
Wie kann man an die Datei anhängen, anstatt sie zu überschreiben? Gibt es eine spezielle Funktion, die an die Datei anhängt?
1439
10
Sie müssen die Datei im Anfügemodus öffnen, indem Sie "a" oder "ab" als Modus einstellen. Siehe open().
Wenn Sie im Modus "a" öffnen, befindet sich die Schreibposition immer am Ende der Datei (ein Append). Sie können mit "a+" öffnen, um das Lesen zu ermöglichen, rückwärts zu suchen und zu lesen (aber alle Schreibvorgänge finden immer noch am Ende der Datei statt!).
Beispiel:
Anmerkung: Die Verwendung von 'a' ist nicht dasselbe wie das Öffnen mit 'w' und das Suchen bis zum Ende der Datei - bedenken Sie, was passieren könnte, wenn ein anderes Programm die Datei öffnet und zwischen dem Suchen und Schreiben mit dem Schreiben beginnt. Auf einigen Betriebssystemen garantiert das Öffnen der Datei mit 'a', dass alle folgenden Schreibvorgänge atomar an das Ende der Datei angehängt werden (auch wenn die Datei durch andere Schreibvorgänge wächst).
Ein paar weitere Details über die Funktionsweise des "a" Modus (nur unter Linux getestet). Auch wenn Sie zurück suchen, wird jeder Schreibvorgang an das Ende der Datei angehängt:
In der Tat sagt die
fopen
manpage:Alte vereinfachte Antwort (ohne
with
):Beispiel: (in einem echten Programm verwendet man
mit
, um die Datei zu schließen - siehe die Dokumentation)Ich mache das immer,
It's einfach, aber sehr nützlich.
Wahrscheinlich wollen Sie
"a"
als Argument für den Modus übergeben. Siehe die Dokumentation zu open().Es gibt andere Permutationen des Modus-Arguments für den Aktualisierungs- (+), den Abschneide- (w) und den Binärmodus (b), aber mit
"a"
zu beginnen ist die beste Wahl.Python hat viele Variationen von den drei Hauptmodi, diese drei Modi sind:
An eine Datei anzuhängen ist also so einfach wie's:
Dann gibt es die Modi, die Ihren Code einfach weniger Zeilen machen:
Schließlich gibt es die Modi des Lesens/Schreibens im Binärformat:
Wenn wir diese Zeile
open(filename, "a")
verwenden, bedeutet dasa
, dass die Datei angehängt wird, d.h. wir können zusätzliche Daten in die bestehende Datei einfügen.Sie können einfach die folgenden Zeilen verwenden, um den Text in Ihrer Datei anzuhängen
Sie können die Datei auch im
r+
Modus öffnen und dann die Dateiposition auf das Ende der Datei setzen.Das Öffnen der Datei im
r+
Modus erlaubt es Ihnen, in andere Dateipositionen außer dem Ende zu schreiben, währenda
unda+
das Schreiben bis zum Ende erzwingen.wenn Sie an eine Datei anhängen möchten
Wir haben die Variable
myfile
deklariert, um eine Datei namenstest.txt
zu öffnen. Open benötigt 2 Argumente, die Datei, die wir öffnen wollen, und eine Zeichenkette, die die Arten von Berechtigungen oder Operationen repräsentiert, die wir mit der Datei durchführen wollenhier sind die Optionen für den Dateimodus
Der Parameter
'a'
bezeichnet den Append-Modus. Wenn Sie't jedes Mal
mit offenem` verwenden wollen, können Sie einfach eine Funktion schreiben, die das für Sie erledigt:Wenn Sie anderswo als am Ende schreiben möchten, können Sie
'r+'
† verwenden:Schließlich gewährt der Parameter
'w+'
noch mehr Freiheit. Insbesondere erlaubt er Ihnen, die Datei zu erstellen, wenn sie nicht't existiert, sowie den Inhalt einer Datei zu leeren, die gerade existiert.† Die Anerkennung für diese Funktion geht an @Primusa][1]
[1]: https://stackoverflow.com/a/54584404/7583953
Hier's mein Skript, das im Grunde die Anzahl der Zeilen zählt, dann anhängt und dann wieder zählt, damit Sie den Beweis haben, dass es funktioniert hat.