Beberapa kali di sini di SO saya telah melihat orang menggunakan rt
dan wt
mode untuk membaca dan menulis file.
Sebagai contoh:
with open('input.txt', 'rt') as input_file:
with open('output.txt', 'wt') as output_file:
...
Saya tidak melihat mode tersebut didokumentasikan , tetapi karena open()
tidak menimbulkan kesalahan - sepertinya cukup legal untuk digunakan.
Untuk apa dan apakah ada perbedaan antara menggunakan wt
vs w
dan rt
vs r
?
python
file
file-io
read-write
alecxe
sumber
sumber
wt
vsw
danrt
vsr
- hanyaexplicit is better than implicit
?r
danrt
...w
tidak selalu sama denganwt
. Salah satu kasusnya adalah digzip.open
mana mode biner adalah default, dan bukan mode teks. Pertanyaan terkait: stackoverflow.com/questions/42013083/…The
t
menunjukkan mode teks, yang berarti bahwa\n
karakter akan diterjemahkan ke akhir baris tuan OS saat menulis ke file, dan kembali lagi ketika membaca. Bendera pada dasarnya hanya berupa noise, karena mode teks adalah defaultnya.Selain itu
U
, flag mode tersebut datang langsung darifopen()
fungsi library C standar , sebuah fakta yang didokumentasikan di paragraf keenam dokumentasi python2 untukopen()
.Sejauh yang saya tahu,
t
bukan dan tidak pernah menjadi bagian dari standar C, jadi meskipun banyak implementasi pustaka C menerimanya, tidak ada jaminan bahwa mereka semua akan, dan oleh karena itu tidak ada jaminan bahwa itu akan berfungsi pada setiap build python. Itu menjelaskan mengapa dokumen python2 tidak mencantumkannya, dan mengapa secara umum tetap berfungsi. Dokumen python3 membuatnya resmi.sumber
'R' untuk membaca, 'w' untuk menulis dan 'a' untuk menambahkan.
'T' mewakili mode teks yang digunakan untuk mode biner.
Sunting: Apakah Anda yakin Anda melihat rt dan bukan rb?
Fungsi ini umumnya membungkus fungsi fopen yang dijelaskan di sini:
http://www.cplusplus.com/reference/cstdio/fopen/
Seperti yang Anda lihat, ini menyebutkan penggunaan b untuk membuka file dalam mode biner.
Tautan dokumen yang Anda berikan juga mengacu pada mode b ini:
Menambahkan 'b' berguna bahkan pada sistem yang tidak memperlakukan file biner dan teks secara berbeda, yang berfungsi sebagai dokumentasi.
sumber
rt
, misalnya stackoverflow.com/questions/10971033/… , atau stackoverflow.com/questions/17127853/… dll. Terima kasih atas infonya, senang mengetahuinya.t
menunjukkan untuktext mode
https://docs.python.org/release/3.1.5/library/functions.html#open
di linux, tidak ada perbedaan antara mode teks dan mode biner, namun, di windows, mode ini diubah
\n
menjadi\r\n
mode teks.http://www.cygwin.com/cygwin-ug-net/using-textbinary.html
sumber
read
mengembalikan string Unicode. Dalam mode biner,read
mengembalikan sebuahbytes
instance. Jika Anda ingin menulis kode Python 2 dengan kompatibilitas ke depan, Anda dapat menggunakanio.open
daripada standaropen
untuk mendapatkan perilaku Python 3 (denganunicode
versusstr
instance).