Pertanyaan Bagaimana Anda menambahkan file?


Bagaimana Anda menambahkan ke file alih-alih menimpanya? Apakah ada fungsi khusus yang ditambahkan ke file?


1186
2018-01-16 16:20


asal


Jawaban:


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

1887
2018-01-16 16:24



Anda perlu membuka file dalam mode tambahan, dengan mengatur "a" atau "ab" sebagai moda. Lihat Buka().

Ketika Anda membuka dengan "a" mode, posisi tulis akan selalu berada di akhir file (lampiran). Anda dapat membuka dengan "a +" untuk memungkinkan membaca, mencari mundur dan membaca (tetapi semua tulisan akan tetap berada di akhir file!).

Contoh:

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

Catatan: Menggunakan 'a' tidak sama dengan membuka dengan 'w' dan mencari ke ujung file - pertimbangkan apa yang mungkin terjadi jika program lain membuka file dan mulai menulis antara pencarian dan penulisan. Pada beberapa sistem operasi, membuka file dengan 'a' menjamin bahwa semua tulisan Anda akan ditambahkan secara atomis ke akhir file (bahkan ketika file tumbuh dengan tulisan lain).


Beberapa rincian lebih lanjut tentang bagaimana mode "a" beroperasi (diuji hanya pada Linux). Bahkan jika Anda mencari kembali, setiap tulisan akan ditambahkan ke bagian akhir file:

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

Bahkan, itu fopen  manpage menyatakan:

Membuka file dalam mode tambahan (a sebagai karakter pertama mode)   menyebabkan semua operasi penulisan berikutnya ke aliran ini terjadi pada   akhir-file, seolah-olah didahului panggilan:

fseek(stream, 0, SEEK_END);

Jawaban lama yang disederhanakan (tidak menggunakan with):

Contoh: (dalam program nyata menggunakan with untuk menutup file - Lihat dokumentasi)

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

160
2018-01-16 16:23



Saya selalu melakukan ini,

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

Sederhana, tetapi sangat berguna.


34
2017-11-09 20:57



Anda mungkin ingin lulus "a" sebagai argumen mode. Lihat dokumentasi untuk Buka().

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

Ada permutasi lain dari argumen mode untuk memperbarui (+), truncating (w) dan binary (b) mode tetapi mulai dengan hanya "a" adalah taruhan terbaikmu.


32
2018-01-16 16:31



ketika kami menggunakan baris ini open(filename, "a")itu a menunjukkan menambahkan file, yang berarti memungkinkan untuk memasukkan data tambahan ke file yang ada.

Anda bisa menggunakan baris berikut ini untuk menambahkan teks di file Anda

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 memiliki banyak variasi dari tiga mode utama, tiga mode ini adalah:

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

Jadi untuk menambahkan file itu semudah:

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

Lalu ada mode yang hanya membuat kode Anda lebih sedikit baris:

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

Akhirnya, ada mode membaca / menulis dalam format biner:

'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



Berikut skrip saya, yang pada dasarnya menghitung jumlah baris, lalu menambahkan, lalu menghitungnya lagi sehingga Anda memiliki bukti yang berhasil.

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