Bagaimana anda tambahkan ke file di Python?

Bagaimana anda menambahkan ke file bukan timpa? Ada fungsi khusus yang menambahkan ke file?

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

Anda perlu untuk membuka file di append mode, dengan menetapkan "a" atau "ab" sebagai modus. Melihat open().

Ketika anda membuka dengan "a" modus, tuliskan posisi yang akan selalu berada di akhir file (append). Anda dapat membuka dengan "+" untuk memungkinkan membaca, berusaha mundur dan baca (tapi semua menulis masih akan 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: dengan Menggunakan 'a' tidak sama dengan pembukaan dengan 'w' dan berusaha untuk akhir file - pertimbangkan apa yang mungkin terjadi jika program lain membuka file tersebut dan mulai menulis antara mencari dan menulis. Pada beberapa sistem operasi, membuka file dengan 'a' menjamin bahwa semua mengikuti anda menulis akan ditambahkan atom ke akhir file (bahkan sebagai file yang tumbuh dengan lainnya menulis).


Beberapa rincian lebih lanjut tentang bagaimana "a" modus beroperasi (diuji pada Linux hanya). Bahkan jika anda mencari kembali, setiap menulis akan menambahkan ke 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'

Dalam kenyataannya, fopen halaman manual menyatakan:

Membuka file dalam modus append (a sebagai karakter pertama dari mode) penyebab semua berikutnya menulis operasi arus ini terjadi di end-of-file, seperti jika didahului panggilan:

fseek(stream, 0, SEEK_END);


Tua modern jawabannya (tidak menggunakan dengan):

Contoh: (dalam program nyata gunakan dengan untuk menutup file - lihat dokumentasi)

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

Saya selalu melakukan hal ini,

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

It's sederhana, tapi sangat berguna.

Komentar (8)

Anda mungkin ingin lulus "a" sebagai modus argumen. Lihat dokumentasi untuk open().

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

Ada yang lain permutasi dari mode argumen untuk memperbarui (+), membatasi (w) dan biner (b) mode tapi mulai dengan hanya "a" adalah taruhan terbaik anda.

Komentar (2)

Python memiliki banyak variasi dari yang utama tiga mode, ini tiga mode:

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

Sehingga untuk menambahkan ke file itu's semudah:

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

Kemudian ada mode yang hanya membuat kode anda lebih sedikit garis-garis:

'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
Komentar (0)

ketika kita menggunakan baris ini terbuka(filename, "a"), bahwa a menunjukkan menambahkan file, yang berarti memungkinkan untuk memasukkan data tambahan untuk berkas yang ada.

Anda hanya dapat menggunakan baris berikut 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")
Komentar (0)

Anda juga dapat membuka file dalam r+ mode dan kemudian mengatur posisi file ke akhir file.

import os

with open('text.txt', 'r+') as f:
    f.seek(0, os.SEEK_END)
    f.write("text to add")

Membuka file dalam r+ modus akan membiarkan anda menulis ke file lain posisi selain akhir, sedangkan a dan a+ memaksa menulis sampai akhir.

Komentar (0)

jika anda ingin menambahkan ke file

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

Kita mendeklarasikan variabel myfile untuk membuka sebuah file bernama test.txt. Terbuka membutuhkan 2 argumen, file yang ingin kita buka dan string yang mewakili jenis izin atau operasi yang ingin kita lakukan pada file

berikut ini adalah file mode pilihan

Mode Deskripsi

'r' Ini adalah mode default. Membuka file untuk membaca. 'w' Ini Modus Membuka file untuk menulis. Jika file tidak ada, ia menciptakan sebuah file baru. Jika file yang ada itu memotong file. 'x' Membuat file baru. Jika file sudah ada, operasi gagal. 'a' Membuka file di append mode. Jika file tidak ada, ia menciptakan sebuah file baru. 't' Ini adalah mode default. Terbuka dalam mode teks. 'b' Ini membuka dalam mode biner. '+' Ini akan membuka file untuk membaca dan menulis (update)

Komentar (0)

The 'a' parameter menandakan append mode. Jika anda don't ingin menggunakan open setiap kali, anda dapat dengan mudah menulis fungsi untuk melakukannya untuk anda: def append(txt='\nFunction Berhasil Dieksekusi', file): dengan terbuka(file, 'a') sebagai f: f.write(txt) Jika anda ingin menulis di tempat lain selain akhir, anda dapat menggunakan 'r+'†: `` impor os

dengan terbuka(file, 'r+') sebagai f: f.seek(0, os.SEEK_END) f.write("text untuk menambahkan") ` Akhirnya,'w+'` parameter hibah bahkan lebih banyak kebebasan. Secara khusus, hal ini memungkinkan anda untuk membuat file jika itu doesn't ada, serta mengosongkan isi dari file yang saat ini ada.


Kredit untuk fungsi ini berjalan ke @Primusa

Komentar (0)

Berikut ini's my script, yang pada dasarnya menghitung jumlah baris, kemudian menambahkan, maka jumlah mereka lagi sehingga anda memiliki bukti-bukti yang bekerja.

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()
Komentar (0)