Antworten:
with open("test.txt", "a") as myfile:
myfile.write("appended text")
with open(file, "a")
Methode anwenden. Ich bin vielleicht altmodisch, aber was ist der Vorteil gegenüberopen(file, "a") ... file.close()
print("appended text", file=myfile)
ist auch für eine bekanntere API möglich.
Sie müssen die Datei im Anhänge-Modus öffnen, indem Sie "a" oder "ab" als Modus festlegen. Siehe open () .
Wenn Sie im Modus "a" öffnen, befindet sich die Schreibposition immer am Ende der Datei (Anhängen). Sie können mit "a +" öffnen, um das Lesen zu ermöglichen, rückwärts zu suchen und zu lesen (aber alle Schreibvorgänge befinden sich noch 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'
Hinweis : Die Verwendung von 'a' ist nicht dasselbe wie das Öffnen mit 'w' und das Suchen bis zum Ende der Datei. Überlegen Sie, was passieren kann, wenn ein anderes Programm die Datei öffnet und zwischen dem Suchen und dem Schreiben mit dem Schreiben beginnt. Unter 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).
Einige weitere Details zur Funktionsweise des "a" -Modus ( nur unter Linux getestet ). Selbst wenn Sie zurück suchen, wird jeder Schreibvorgang 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'
In der Tat heißt es auf der fopen
Manpage :
Das Öffnen einer Datei im Append-Modus (a als erstes Zeichen des Modus) führt dazu, dass alle nachfolgenden Schreibvorgänge in diesen Stream am Dateiende ausgeführt werden, als ob sie dem Aufruf vorausgehen:
fseek(stream, 0, SEEK_END);
with
):Beispiel: ( in einem realen Programm verwenden , 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.
Sie möchten wahrscheinlich "a"
als Modusargument übergeben. Siehe open () in den Dokumenten .
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 mit nur zu beginnen "a"
ist die beste Wahl.
file
beschattet eine eingebaute Funktion. Verwenden Sie es nicht für Variablen.
file
ist in Python 3 nicht mehr integriert. Selbst in Python 2 wird es sehr selten verwendet . Das Öffnen einer Datei ist eine übliche Operation. Es ist in Ordnung, file
hier sowohl in Python 2 als auch in
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 also so einfach wie:
f = open('filename.txt', 'a')
f.write('whatever you want to write here (in append mode) here.')
Dann gibt es die Modi, die Ihren Code nur weniger Zeilen machen:
'r+' read + write text
'w+' read + write text
'a+' append + read text
Schließlich gibt es 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 Linie benutzen open(filename, "a")
, dasa
bedeutet die Datei angehängt wird. bedeutet, dass zusätzliche Daten in die vorhandene Datei eingefügt werden können.
Sie können einfach die folgenden Zeilen verwenden, um den Text in Ihrer Datei anzuhängen
def FileSave(filename,content):
with open(filename, "a") as myfile:
myfile.write(content)
FileSave("test.txt","test1 \n")
FileSave("test.txt","test2 \n")
Sie können die Datei auch im r+
Modus öffnen und dann die Dateiposition auf 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 a
und das a+
Schreiben bis zum Ende erzwingen.
Wenn Sie an eine Datei anhängen möchten
with open("test.txt", "a") as myfile:
myfile.write("append me")
Wir haben die Variable deklariert myfile
, um eine Datei mit dem Namen zu öffnen test.txt
. Open benötigt zwei Argumente, die Datei, die wir öffnen möchten, und eine Zeichenfolge, die die Arten von Berechtigungen oder Operationen darstellt, die wir für die Datei ausführen möchten
Hier finden Sie Optionen für den Dateimodus
Modusbeschreibung 'r' Dies ist der Standardmodus. Es öffnet die Datei zum Lesen. 'w' Dieser Modus Öffnet die Datei zum Schreiben. Wenn keine Datei 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 Anhänge-Modus öffnen. Wenn keine Datei vorhanden ist, wird eine neue Datei erstellt. 't' Dies ist der Standardmodus. Es wird im Textmodus geöffnet. 'b' Dies wird im Binärmodus geöffnet. '+' Dies öffnet eine Datei zum Lesen und Schreiben (Aktualisieren)
Der 'a'
Parameter kennzeichnet den Append-Modus. Wenn Sie nicht with open
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 'w+'
gewährt der Parameter noch mehr Freiheit. Insbesondere können Sie die Datei erstellen, wenn sie nicht vorhanden ist, und den Inhalt einer aktuell vorhandenen Datei leeren.
Der einfachste Weg, mehr Text an das Ende einer Datei anzuhängen, ist die Verwendung von:
with open('/path/to/file', 'a+') as file:
file.write("Additions to file")
file.close()
Die Anweisung a+
in der open(...)
Anweisung weist an, die Datei im Anhänge-Modus zu öffnen, und ermöglicht Lese- und Schreibzugriff.
Es wird auch immer empfohlen, file.close()
alle Dateien zu schließen, die Sie geöffnet haben, sobald Sie sie verwendet haben.
Hier ist mein Skript, das im Grunde die Anzahl der Zeilen zählt, dann anhängt und sie dann erneut zählt, damit Sie Beweise dafür haben, dass es funktioniert hat.
shortPath = "../file_to_be_appended"
short = open(shortPath, 'r')
## this counts how many line are originally in the file:
long_path = "../file_to_be_appended_to"
long = open(long_path, 'r')
for i,l in enumerate(long):
pass
print "%s has %i lines initially" %(long_path,i)
long.close()
long = open(long_path, 'a') ## now open long file to append
l = True ## will be a line
c = 0 ## count the number of lines you write
while l:
try:
l = short.next() ## when you run out of lines, this breaks and the except statement is run
c += 1
long.write(l)
except:
l = None
long.close()
print "Done!, wrote %s lines" %c
## finally, count how many lines are left.
long = open(long_path, 'r')
for i,l in enumerate(long):
pass
print "%s has %i lines after appending new lines" %(long_path, i)
long.close()