Saya perhatikan bahwa banyak orang menggunakan with open(file, "a")metode ini. Saya mungkin kuno, tapi apa kelebihannyaopen(file, "a") ... file.close()
75
bluewoodtree: Manfaatnya mirip dengan RAII di C ++. Jika Anda lupa tutup (), mungkin perlu beberapa saat sebelum file benar-benar ditutup. Lebih mudah bahwa Anda mungkin berpikir untuk melupakannya ketika kode memiliki beberapa titik keluar, pengecualian, dan sebagainya.
Petter
54
print("appended text", file=myfile)juga memungkinkan, untuk api yang lebih akrab.
Thomas Ahle
206
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!).
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'
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);
Jawaban lama yang disederhanakan (tidak menggunakan with):
Contoh: ( dalam program nyata digunakan withuntuk menutup file - lihat dokumentasi )
ini sedikit lebih baik dan sedikit lebih aman untuk menulis: dengan terbuka ('nama file', 'a') sebagai f: f.write ('barang')
Sam Redway
35
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.
ketika kita menggunakan baris ini open(filename, "a"), itu amenunjukkan 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
with open("test.txt","a")as myfile:
myfile.write("append me")
Kami menyatakan variabel myfileuntuk 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 opensetiap kali, Anda dapat dengan mudah menulis fungsi untuk melakukannya untuk Anda:
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.
"file.close" secara otomatis dipanggil di akhir blok "with", yang merupakan keunggulan kata kunci. Juga, OP bertanya tentang membuka file untuk ditambahkan. Mode "+" tidak diperlukan kecuali Anda juga ingin membaca.
Erik Knowles
-6
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):passprint"%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 writewhile 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):passprint"%s has %i lines after appending new lines"%(long_path, i)
long.close()
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:
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:
Faktanya, halaman
fopen
manual menyatakan:Jawaban lama yang disederhanakan (tidak menggunakan
with
):Contoh: ( dalam program nyata digunakan
with
untuk menutup file - lihat dokumentasi )sumber
Saya selalu melakukan ini,
Sederhana, tetapi sangat bermanfaat.
sumber
Anda mungkin ingin lulus
"a"
sebagai argumen mode. Lihat dokumen untuk open () .Ada permutasi lain dari argumen mode untuk memperbarui (+), memotong (w) dan mode biner (b) tetapi mulai dengan hanya
"a"
merupakan taruhan terbaik Anda.sumber
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 menggunakanfile
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:
Jadi untuk menambahkan file semudah:
Lalu ada mode yang hanya membuat kode Anda lebih sedikit baris:
Akhirnya, ada mode membaca / menulis dalam format biner:
sumber
ketika kita menggunakan baris ini
open(filename, "a")
, itua
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
sumber
Anda juga dapat melakukannya dengan
print
bukannyawrite
:Jika test.txt tidak ada, itu akan dibuat ...
sumber
Anda juga dapat membuka file dalam
r+
mode dan kemudian mengatur posisi file ke akhir file.Membuka file dalam
r+
mode akan memungkinkan Anda menulis ke posisi file lain di samping akhir, sementaraa
dana+
memaksa menulis sampai akhir.sumber
jika Anda ingin menambahkan file
Kami menyatakan variabel
myfile
untuk membuka file bernamatest.txt
. Buka membutuhkan 2 argumen, file yang ingin kita buka dan string yang mewakili jenis izin atau operasi yang ingin kita lakukan pada filedi sini adalah opsi mode file
sumber
The
'a'
menandakan parameter modus menambahkan. Jika Anda tidak ingin menggunakannyawith open
setiap kali, Anda dapat dengan mudah menulis fungsi untuk melakukannya untuk Anda:Jika Anda ingin menulis di tempat lain selain akhir, Anda dapat menggunakan
'r+'
† :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.† Kredit untuk fungsi ini ke @Primusa
sumber
Cara paling sederhana untuk menambahkan lebih banyak teks ke akhir file adalah dengan menggunakan:
The
a+
dalamopen(...)
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.sumber
Inilah skrip saya, yang pada dasarnya menghitung jumlah baris, lalu menambahkan, lalu menghitungnya lagi sehingga Anda memiliki bukti bahwa itu berhasil.
sumber