Frage Wie hängt man eine Datei an?


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


1186
2018-01-16 16:20


Ursprung


Antworten:


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

1887
2018-01-16 16:24



Sie müssen die Datei im Append-Modus öffnen, indem Sie "a" oder "ab" als Modus einstellen. Sehen öffnen().

Wenn Sie mit "a" -Modus öffnen, wird die Schreibposition immer am Ende der Datei (ein Append) sein. Sie können mit "a +" öffnen, um zu lesen, rückwärts zu suchen und zu lesen (aber alle Schreibvorgänge sind immer 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 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 zu schreiben beginnt. Auf einigen Betriebssystemen garantiert das Öffnen der Datei mit 'a', dass alle folgenden Schreibvorgänge am Ende der Datei angehängt werden (selbst wenn die Datei durch andere Schreibvorgänge wächst).


Ein paar weitere Details darüber, wie der "a" -Modus funktioniert (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, die fopen  Manpage Zustände:

Öffnen einer Datei im Append-Modus (a als erstes Zeichen des Modus)   bewirkt, dass alle nachfolgenden Schreiboperationen in diesem Stream stattfinden   Dateiende, als ob der Anruf voranging:

fseek(stream, 0, SEEK_END);

Alte vereinfachte Antwort (nicht verwenden with):

Beispiel: (in einem echten Programm benutzen with um die Datei zu schließen - sehen die Dokumentation)

>>> open("test","wb").write("test")
>>> open("test","a+b").write("koko")
>>> open("test","rb").read()
'testkoko'

160
2018-01-16 16:23



Ich mache das immer,

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

Es ist einfach, aber sehr nützlich.


34
2017-11-09 20:57



Du willst wahrscheinlich bestehen "a" als das Modusargument. Siehe die Dokumentation für öffnen().

with open("foo", "a") as f:
    f.write("cool beans...")

Es gibt andere Permutationen des mode-Arguments für das Aktualisieren (+), das Abschneiden (w) und den Binärmodus (b), aber das Starten mit nur "a" ist deine beste Wette.


32
2018-01-16 16:31



wenn wir diese Linie benutzen open(filename, "a"), Das a zeigt das Anhängen der Datei an, das 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 Ihre Datei einzufügen

def FileSave(filename,content):
    with open(filename, "a") as myfile:
        myfile.write(content)

FileSave("test.txt","test1 \n")
FileSave("test.txt","test2 \n")

10
2017-12-29 15:51



Python hat viele Variationen von den drei Hauptmodi, diese drei Modi sind:

'w'   write text
'r'   read text
'a'   append text

Zum Anhängen an eine Datei ist es 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 Ihrem Code weniger Zeilen geben:

'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

10
2017-10-27 17:27



Hier ist mein Skript, das im Grunde die Anzahl der Zeilen zählt, dann anfügt und dann wieder zählt, so dass Sie wissen, 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()

-4
2017-08-31 22:19