Cum ai adăuga la dosar, în loc de a suprascrie-l? Există o funcție specială, care se adaugă la dosar?
Ai nevoie pentru a deschide fișierul în modul de adăugare, prin stabilirea "o" sau "ab" modul. Vezi open().
Când deschise cu "o" modul, scrie poziție va mereu fi la sfârșitul de fișier (un append). Puteți deschide cu "o+" pentru a permite citirea, caută înapoi și a citit (dar tot scrie va fi încă de la sfârșitul de fișier!).
Exemplu:
>>> 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'
Notă: Utilizarea 'un' nu este la fel ca deschiderea cu 'g' și căutând la sfârșitul fișierului - ia în considerare ceea ce s-ar putea întâmpla dacă un alt program deschis dosarul și a început să scrie între caute și să scrie. Pe unele sisteme de operare, deschideți fișierul cu 'un' garantează că toate următoarele scrie va fi anexată atomic la sfârșitul fișierului (chiar ca fișierul creste de alți scrie).
Mai multe detalii despre modul în care "o" modul operează (testat pe Linux numai). Chiar dacă vei căuta înapoi, fiecare scrie va adăuga la sfârșitul fișierului:
>>> 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'
În fapt, fopen
manpage prevede:
Deschiderea unui fișier în modul de adăugare (un fel de caracter în primul rând de modul) cauze ulterioare scrie operațiuni în acest flux să apară la de sfârșit de fișier, ca și în cazul precedat de telefon:
fseek(flux, 0, SEEK_END);
Exemplu: (într-un program real utilizați " cu " pentru a închide fișierul - a se vedea documentația)
>>> open("test","wb").write("test")
>>> open("test","a+b").write("koko")
>>> open("test","rb").read()
'testkoko'
Probabil vrei să trece `"o" ca modul de argument. Vezi docs pentru open().
with open("foo", "a") as f:
f.write("cool beans...")
Există și alte permutări de modul argument pentru actualizarea (+), trunchierea (w) și binar (b) modul dar incepand cu doar"o" este cel mai bun pariu.
Python are mai multe variante jos de principalele trei moduri, aceste trei moduri sunt:
'w' write text
'r' read text
'a' append text
Deci, pentru a adăuga la un fișier-l's la fel de ușor ca:
f = open('filename.txt', 'a')
f.write('whatever you want to write here (in append mode) here.')
Apoi, există moduri pe care doar face codul mai puține linii:
'r+' read + write text
'w+' read + write text
'a+' append + read text
În cele din urmă, există moduri de citire/scriere în format binar:
'rb' read binary
'wb' write binary
'ab' append binary
'rb+' read + write binary
'wb+' read + write binary
'ab+' append + read binary
când folosim această linie open(filename, "o")
, care " a " indică anexarea la dosar, înseamnă că permite pentru a introduce date suplimentare la fișierul existent.
Puteți folosi doar această următoarele linii pentru a adăuga textul în fișierul dvs.
def FileSave(filename,content):
with open(filename, "a") as myfile:
myfile.write(content)
FileSave("test.txt","test1 \n")
FileSave("test.txt","test2 \n")
De asemenea, puteți să deschideți fișierul în r+
modul și apoi instalați fișierul de poziție de la sfârșitul fișierului.
import os
with open('text.txt', 'r+') as f:
f.seek(0, os.SEEK_END)
f.write("text to add")
Deschiderea fișierului în r+
modul va permite să scrie la alte pozițiile fișier în afară de final, în timp ce " a " și o+
vigoare scris la final.
dacă doriți să adăugați un fișier
with open("test.txt", "a") as myfile:
myfile.write("append me")
Ne-am declarat variabila myfile
pentru a deschide un fișier numit test.txt
. Deschis are 2 argumente, fișierul pe care vrem să le deschidem și un șir de caractere care reprezintă tipuri de permisiunea sau exploatarea vrem să facem pe fișier
aici este modul de fișier opțiuni
Modul De Descriere'r' Acesta este modul implicit. Se Deschide fișierul pentru citire. 'g' Acest Mod se Deschide fișierul pentru scriere. Dacă fișierul nu există, se creează un nou fișier. Dacă fișierul există o trunchiază fișierul. 'x' Creează un nou fișier. Dacă fișierul există deja, operațiunea nu reușește. 'un' Deschide fișierul în modul de adăugare. Dacă fișierul nu există, se creează un nou fișier. 't' Acesta este modul implicit. Acesta se deschide în modul text. 'b' Acesta se deschide în mod binar. '+' Acest lucru va deschide un fișier pentru citire și scriere (actualizare)
A 'un'
parametru semnifică modul de adăugare. Dacă tu nu't doriți să utilizați cu open, de fiecare dată, puteți scrie cu ușurință o funcție pentru a face pentru tine: `` def append(txt='\nFunction Executate cu Succes', fișier): cu open(fișier, 'un') ca f: f.scrie(txt) `` Dacă doriți să scrie în altă parte decât la sfârșitul anului, puteți utiliza
'r+'`†:
``
import os
cu open(fișier, 'r+') ca f:
f.seek(0, os.SEEK_END)
f.scrie("text pentru a adăuga")
` În cele din urmă,
'w+'` parametru acordă și mai multă libertate. În special, acesta vă permite să creați fișierul în cazul în care nu't există, precum și goliți conținutul unui fișier care există în prezent.
Aici's script-ul meu, care, practic, contorizează numărul de linii, apoi adaugă, apoi le numără din nou, astfel încât aveți dovezi că a funcționat.
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()