Kaip pridėti failą „Python“?

Kaip pridėti prie failo ir ne perrašyti? Ar yra speciali funkcija, kuri pridedama prie failo?

1284
16 янв. nustatė user502039 16 sausis 2011-01-16 19:20 '11, 19:20, 2011-01-16 19:20
@ 9 atsakymai
 with open("test.txt", "a") as myfile: myfile.write("appended text") 
2037 m
16 янв. Atsakymą pateikė Petter , 16 d. 2011-01-16 19:24 '11, 19:24, 2011-01-16 19:24

Turite atidaryti failą prijungimo režimu, nustatydami režimą „a“ arba „ab“. Žr. Atidaryti () .

Atidarius režimą „a“, įrašo padėtis visada bus failo pabaigoje (pridėti). Galite atidaryti „a +“, kad galėtumėte skaityti, ieškoti atgal ir skaityti (bet visi įrašai vis tiek bus failo pabaigoje!).

Pavyzdys:

 >>> 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' 

Pastaba „A“ naudojimas nėra tas pats, kaip atidarymas „w“ ir failo pabaigos paieška - pagalvokite, kas gali atsitikti, jei kita programa atidaro failą ir pradės rašyti tarp paieškos ir rašymo. Kai kuriose operacinėse sistemose, atidarius failą su „a“, užtikrinama, kad visi tolesni įrašai bus pridėti prie atomo prie failo pabaigos (net jei failas auga su kitais įrašais).


Papildoma informacija apie tai, kaip veikia režimas „a“ (išbandytas tik „Linux“). Net jei ieškosite atgal, kiekvienas įrašas bus pridėtas prie failo pabaigos:

 >>> 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' 

Iš tiesų, fopen manpage nurodo:

Atidarius failą pridedamame režime (a kaip pirmojo režimo simbolis), visos vėlesnės rašymo operacijos į šį failo pabaigos srautą, tarsi tai būtų prieš skambinant:

 fseek(stream, 0, SEEK_END); 

Senas supaprastintas atsakymas (nenaudojant with ):

Pavyzdys: (tikroje programoje naudokite, with norite uždaryti failą - žr. Dokumentaciją )

 >>> open("test","wb").write("test") >>> open("test","a+b").write("koko") >>> open("test","rb").read() 'testkoko' 
169
16 янв. atsakymas, kurį pateikė sinelaw Jan 16 2011-01-16 19:23 '11, 19:23, 2011-01-16 19:23

Aš visada tai darau

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

Tai paprasta, bet labai naudinga.

36
09 нояб. Atsakymą pateikė Seth Connell . 2014-11-09 23:57 '14, 23:57 2014-11-09 23:57

Tikriausiai norite perduoti "a" kaip argumentą režimui. Žr. „ Atidaryti dokumentai“ () .

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

Yra kitų režimo argumentų permutacijų atnaujinimui (+), truncation (w) ir binary (b) režimui, bet tik su "a" yra geriausias pasirinkimas.

33
16 янв. atsakymas pateikiamas istruble 16 sausis 2011-01-16 19:31 '11, 19:31, 2011-01-16 19:31

Pythone yra daug trijų pagrindinių režimų variantų: šie trys režimai:

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

Jei norite pridėti failą, tai taip paprasta, kaip:

 f = open('filename.txt', 'a') f.write('whatever you want to write here (in append mode) here.') 

Tada yra režimų, kurie tik daro jūsų kodą mažesnį už linijas:

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

Galiausiai, yra skaitymo / rašymo režimai dvejetainiu formatu:

 'rb' read binary 'wb' write binary 'ab' append binary 'rb+' read + write binary 'wb+' read + write binary 'ab+' append + read binary 
16
27 окт. spalio 27 d. atsakymas buvo pateiktas Cleve Green . 2017-10-27 20:27 '17, 08:27 pm 2017-10-27 20:27

kai mes naudojame šią eilutę open(filename, "a") , a nurodo pridėti failą, o tai reiškia galimybę įterpti papildomus duomenis į esamą failą.

Jei norite pridėti tekstą prie failo, galite tiesiog naudoti šias eilutes.

 def FileSave(filename,content): with open(filename, "a") as myfile: myfile.write(content) FileSave("test.txt","test1 \n") FileSave("test.txt","test2 \n") 
11
29 дек. K.Suthagaro atsakymas, gruodžio 29 d. 2016-12-29 18:51 '17, 18:51 pm 2016-12-29 18:51

jei norite pridėti prie failo

 with open("test.txt", "a") as myfile: myfile.write("append me") 

Mes paskelbėme kintamąjį myfile kad atidarytumėte failą, pavadintą test.txt . Atidaryti du argumentai: failą, kurį norime atidaryti, ir eilutę, atspindinčią leidimų ar operacijų tipus, kuriuos norime atlikti faile

yra failų režimo parinktys

 Režimo aprašymas „r“ Tai yra numatytasis režimas.  Jis atveria failą skaitymui. „w“ Šis režimas atveria failą rašymui.  Jei failo nėra, jis sukuria naują failą. Jei failas egzistuoja, failas sutrumpinamas. „x“ sukuria naują failą.  Jei failas jau yra, operacija nepavyksta. „a“ Atidaryti failą pridedamame režime.  Jei failo nėra, jis sukuria naują failą. 't' Tai yra numatytasis režimas.  Jis atidaromas teksto režimu. „b“ Tai atsidaro dvejetainiu režimu. „+“ Tai bus skaitymo ir rašymo (atnaujinimo) atveju
0
20 дек. Atsakymas pateikiamas nima_moradi 20 gruodis. 2018-12-20 08:39 '18, 8:39 pm 2018-12-20 08:39

Čia yra mano scenarijus, kuris iš esmės skaičiuoja eilučių skaičių, tada prideda ir paskui juos skaičiuoja taip, kad turėtumėte įrodymų, kad tai veikė.

 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() 
-6
01 сент. atsakymas į keliaujančius kaulus 01 rugsėjo 2016-09-01 01:19 '16 at 1:19 2016-09-01 01:19

Tarkime, kad turite failą biki.txt , kuriame yra:

 http://www.youtube.com/watch?v=6INqTUEnitkhttp://www.youtube.com/watch?v=6M6GT5xJhHohttp://www.youtube.com/watch?v=6q1SuHTqY0Ahttp://www.youtube.com/watch?v=6w2kORM6gvQ 

Tarkime, kad norite, kad jis būtų new.txt formatu ir išsaugotas kitame faile, pavyzdžiui, new.txt :

 http://www.youtube.com/watch?v=6INqTUEnitk http://www.youtube.com/watch?v=6M6GT5xJhHo http://www.youtube.com/watch?v=6q1SuHTqY0A http://www.youtube.com/watch?v=6w2kORM6gvQ 

Štai kaip tai padaryti:

 #!/usr/bin/env python import re import os import sys ### Coding to arrange matching in new line with open("biki.txt","r") as myfile: mydata = myfile.read() data = mydata.replace("http","%http") for m in range(1,1000): ## For loop is use here dat1 = data.split('%')[m] ## Contain of split file f = open("new.txt","a") ## file open in appending mode ie 'a' f.write(dat1) ## writing the contain dat1 to new.txt f.close() ## File closing after writing. 
-6
20 нояб. Atsakymas pateikiamas Teron 20 lapkričio. 2012-11-20 09:49 '12 at 9:49 2012-11-20 09:49

Kiti klausimai apie žymių pridedami arba Užduoti klausimą