Jawaban:
with open("test.txt", "a") as myfile:
myfile.write("appended text")
with open(file, "a")
metode ini. Saya mungkin kuno, tapi apa kelebihannyaopen(file, "a") ... file.close()
print("appended text", file=myfile)
juga memungkinkan, untuk api yang lebih akrab.
Anda perlu membuka file dalam mode append, dengan menetapkan "a" atau "ab" sebagai mode. Lihat buka () .
Ketika Anda membuka dengan mode "a", posisi menulis akan selalu berada di akhir file (sebuah lampiran). Anda dapat membuka dengan "a" untuk memungkinkan membaca, mencari mundur dan membaca (tetapi semua menulis masih 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 sampai akhir file - pertimbangkan apa yang mungkin terjadi jika program lain membuka file dan mulai menulis antara pencarian dan menulis. Pada beberapa sistem operasi, membuka file dengan jaminan 'a' bahwa semua tulisan Anda berikut akan ditambahkan secara atomis ke bagian akhir file (bahkan ketika file tersebut bertambah oleh tulisan lain).
Beberapa detail lebih lanjut tentang bagaimana mode "a" beroperasi (hanya diuji di Linux ). Bahkan jika Anda mencari kembali, setiap penulisan akan ditambahkan 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'
Faktanya, halaman fopen
manual menyatakan:
Membuka file dalam mode append (a sebagai karakter pertama dari mode) menyebabkan semua operasi penulisan berikutnya ke aliran ini terjadi pada akhir file, seolah-olah mendahului panggilan:
fseek(stream, 0, SEEK_END);
with
):Contoh: ( dalam program nyata digunakan with
untuk menutup file - lihat dokumentasi )
>>> open("test","wb").write("test")
>>> open("test","a+b").write("koko")
>>> open("test","rb").read()
'testkoko'
Saya selalu melakukan ini,
f = open('filename.txt', 'a')
f.write("stuff")
f.close()
Sederhana, tetapi sangat bermanfaat.
Anda mungkin ingin lulus "a"
sebagai argumen mode. Lihat dokumen untuk open () .
with open("foo", "a") as f:
f.write("cool beans...")
Ada permutasi lain dari argumen mode untuk memperbarui (+), memotong (w) dan mode biner (b) tetapi mulai dengan hanya "a"
merupakan taruhan terbaik Anda.
file
membayangi fungsi bawaan. Jangan gunakan itu untuk variabel.
file
tidak lagi menjadi builtin dalam Python 3. Bahkan dalam Python 2, ini sangat jarang digunakan . Membuka file adalah operasi yang umum. Tidak masalah untuk menggunakan file
nama di sini pada Python 2 dan 3. Ketahui kapan harus tidak konsisten.
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 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
ketika kita menggunakan baris ini open(filename, "a")
, itu a
menunjukkan menambahkan file, itu 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")
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+
mode akan memungkinkan Anda menulis ke posisi file lain di samping akhir, sementara a
dan a+
memaksa menulis sampai akhir.
jika Anda ingin menambahkan file
with open("test.txt", "a") as myfile:
myfile.write("append me")
Kami menyatakan variabel myfile
untuk membuka file bernama test.txt
. Buka membutuhkan 2 argumen, file yang ingin kita buka dan string yang mewakili jenis izin atau operasi yang ingin kita lakukan pada file
di sini adalah opsi mode file
Deskripsi Mode 'r' Ini adalah mode default. Membuka file untuk dibaca. 'w' Mode Ini Membuka file untuk ditulis. Jika file tidak ada, itu membuat file baru. Jika ada file itu memotong file. 'x' Membuat file baru. Jika file sudah ada, operasi gagal. 'a' Buka file dalam mode tambahkan. Jika file tidak ada, itu membuat file baru. 't' Ini adalah mode default. Ini terbuka dalam mode teks. 'b' Ini terbuka dalam mode biner. '+' Ini akan membuka file untuk membaca dan menulis (memperbarui)
The 'a'
menandakan parameter modus menambahkan. Jika Anda tidak ingin menggunakannya with open
setiap kali, Anda dapat dengan mudah menulis fungsi untuk melakukannya untuk Anda:
def append(txt='\nFunction Successfully Executed', file):
with open(file, 'a') as f:
f.write(txt)
Jika Anda ingin menulis di tempat lain selain akhir, Anda dapat menggunakan 'r+'
† :
import os
with open(file, 'r+') as f:
f.seek(0, os.SEEK_END)
f.write("text to add")
Akhirnya, 'w+'
parameter ini memberikan lebih banyak kebebasan. Secara khusus, ini memungkinkan Anda untuk membuat file jika tidak ada, serta mengosongkan isi file yang saat ini ada.
Cara paling sederhana untuk menambahkan lebih banyak teks ke akhir file adalah dengan menggunakan:
with open('/path/to/file', 'a+') as file:
file.write("Additions to file")
file.close()
The a+
dalam open(...)
menginstruksikan pernyataan untuk membuka file dalam modus append dan memungkinkan membaca dan akses tulis.
Ini juga selalu merupakan praktik yang baik untuk digunakan file.close()
untuk menutup semua file yang telah Anda buka setelah Anda selesai menggunakannya.
Inilah skrip saya, yang pada dasarnya menghitung jumlah baris, lalu menambahkan, lalu menghitungnya lagi sehingga Anda memiliki bukti bahwa itu 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()