Wie hängt man an der Datei an, anstatt sie zu überschreiben? Gibt es eine spezielle Funktion, die an die Datei angehängt wird?
with open("test.txt", "a") as myfile:
myfile.write("appended text")
Sie müssen die Datei im Anfügemodus öffnen, indem Sie als Modus "a" oder "ab" festlegen. Siehe OPEN ().
Wenn Sie mit "a" öffnen, befindet sich die Schreibposition immer am Ende der Datei (ein Anhang). Sie können mit "a +" öffnen, um das Lesen zu ermöglichen, rückwärts suchen und lesen (aber alle Schreibvorgänge bleiben am Ende der Datei!).
Beispiel:
>>> with open('test1','wb') as f:
f.write('test')
>>> with open('test1','ab') as f:
f.write('koko')
>>> with open('test1','rb') as f:
f.read()
'testkoko'
Note: Die Verwendung von 'a' ist nicht gleichbedeutend mit dem Öffnen mit 'w' und dem Suchen nach dem Ende der Datei. Überlegen Sie, was passieren könnte, wenn ein anderes Programm die Datei öffnet und zwischen dem Suchen und dem Schreiben beginnt. Auf einigen Betriebssystemen wird durch das Öffnen der Datei mit 'a' sichergestellt, dass alle folgenden Schreibvorgänge atomar an das Ende der Datei angehängt werden (auch wenn die Datei durch andere Schreibvorgänge erweitert wird).
Weitere Details zur Funktionsweise des "a" -Modus (nur unter Linux getestet). Selbst wenn Sie zurückschauen, wird jedes Schreiben an das Ende der Datei angehängt:
>>> f = open('test','a+') # Not using 'with' just to simplify the example REPL session
>>> f.write('hi')
>>> f.seek(0)
>>> f.read()
'hi'
>>> f.seek(0)
>>> f.write('bye') # Will still append despite the seek(0)!
>>> f.seek(0)
>>> f.read()
'hibye'
Tatsächlich lautet die Variable fopen
manpage :
Öffnen einer Datei im Anfügemodus (a als erstes Zeichen des Modus) bewirkt, dass alle nachfolgenden Schreibvorgänge in diesen Stream um .__ erfolgen. Dateiende, als ob dem Aufruf vorausgegangen wäre:
fseek(stream, 0, SEEK_END);
with
):Beispiel: (in einem realen Programm verwende with
, um die Datei zu schließen - siehe die Dokumentation)
>>> open("test","wb").write("test")
>>> open("test","a+b").write("koko")
>>> open("test","rb").read()
'testkoko'
Ich mache das immer,
f = open('filename.txt', 'a')
f.write("stuff")
f.close()
Es ist einfach, aber sehr nützlich.
Wahrscheinlich möchten Sie "a"
als Modusargument übergeben. Siehe die Dokumentation zu open () .
with open("foo", "a") as f:
f.write("cool beans...")
Es gibt andere Permutationen des Modusarguments zum Aktualisieren (+), Abschneiden (w) und Binärmodus (b), aber nur mit "a"
zu beginnen ist die beste Wahl.
Python hat viele Variationen der drei Hauptmodi. Diese drei Modi sind:
'w' write text
'r' read text
'a' append text
Das Anhängen an eine Datei ist so einfach wie folgt:
f = open('filename.txt', 'a')
f.write('whatever you want to write here (in append mode) here.')
Dann gibt es die Modi, in denen der Code weniger Zeilen enthält:
'r+' read + write text
'w+' read + write text
'a+' append + read text
Schließlich gibt es noch die Modi Lesen/Schreiben im Binärformat:
'rb' read binary
'wb' write binary
'ab' append binary
'rb+' read + write binary
'wb+' read + write binary
'ab+' append + read binary
wenn wir diese Zeile open(filename, "a")
verwenden, gibt diese a
das Anhängen der Datei an.
Sie können einfach die folgenden Zeilen verwenden, um den Text in Ihrer Datei anzufügen
def FileSave(filename,content):
with open(filename, "a") as myfile:
myfile.write(content)
FileSave("test.txt","test1 \n")
FileSave("test.txt","test2 \n")
wenn Sie an eine Datei anhängen möchten
with open("test.txt", "a") as myfile:
myfile.write("append me")
Wir haben die Variable myfile
deklariert, um eine Datei mit dem Namen test.txt
zu öffnen. Open nimmt zwei Argumente an, die Datei, die wir öffnen möchten, und eine Zeichenfolge, die die Art der Berechtigung oder Operation darstellt, die wir für die Datei ausführen möchten
hier sind Dateimodus-Optionen
Modus Beschreibung 'R' Dies ist der Standardmodus. Öffnet die Datei zum Lesen . 'W' Dieser Modus Öffnet die Datei zum Schreiben. Wenn eine Datei nicht vorhanden ist, wird eine neue Datei erstellt. Wenn eine Datei vorhanden ist, wird die Datei abgeschnitten. _ 'X' Erstellt eine neue Datei. Wenn die Datei bereits vorhanden ist, schlägt der Vorgang fehl . 'A' Datei im Anfügemodus öffnen. Wenn eine Datei nicht vorhanden ist, wird eine neue Datei erstellt . 'T' Dies ist der Standardmodus. Es öffnet sich im Textmodus . 'B' Öffnet den binären Modus . '+' Dadurch wird eine Datei zum Lesen und Schreiben (Aktualisieren) .__ geöffnet.
Der Parameter 'a'
gibt den Anfügemodus an. Wenn Sie with open
nicht jedes Mal verwenden möchten, können Sie einfach eine Funktion schreiben, die dies für Sie erledigt:
def append(txt='\nFunction Successfully Executed', file):
with open(file, 'a') as f:
f.write(txt)
Wenn Sie an einer anderen Stelle als am Ende schreiben möchten, können Sie 'r+'
verwenden.†:
import os
with open(file, 'r+') as f:
f.seek(0, os.SEEK_END)
f.write("text to add")
Schließlich gewährt der Parameter 'w+'
noch mehr Freiheit. Insbesondere können Sie die Datei erstellen, wenn sie nicht vorhanden ist, und den Inhalt einer derzeit vorhandenen Datei leeren.
Sie können die Datei auch im r+
-Modus öffnen und dann die Dateiposition an das Ende der Datei setzen.
import os
with open('text.txt', 'r+') as f:
f.seek(0, os.SEEK_END)
f.write("text to add")
Wenn Sie die Datei im r+
-Modus öffnen, können Sie neben dem Ende an andere Dateipositionen schreiben, während a
und a+
das Schreiben zum Ende erzwingen.