it-swarm.com.de

Wie hängt man eine Datei in Python an?

Wie hängt man an der Datei an, anstatt sie zu überschreiben? Gibt es eine spezielle Funktion, die an die Datei angehängt wird?

1298
user502039
with open("test.txt", "a") as myfile:
    myfile.write("appended text")
2063
Petter

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 fopenmanpage :

Ö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);

Alte vereinfachte Antwort (nicht mit 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'
170
sinelaw

Ich mache das immer,

f = open('filename.txt', 'a')
f.write("stuff")
f.close()

Es ist einfach, aber sehr nützlich.

36
Seth Connell

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.

33
istruble

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
21
Cleve Green

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")
11
K.Suthagar

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.
1
nima_moradi

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.


Gutschrift für diese Funktion geht an @Primusa

1
Alec Alameddine

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.

0
Primusa