Kode:
file('pinax/media/a.jpg', 'wb')
open
alih-alih file
, yang tidak digunakan lagi di Python 2 dan dihapus dengan Python 3. Lihat stackoverflow.com/questions/112970/…
Kode:
file('pinax/media/a.jpg', 'wb')
open
alih-alih file
, yang tidak digunakan lagi di Python 2 dan dihapus dengan Python 3. Lihat stackoverflow.com/questions/112970/…
Jawaban:
Mode file , tulis dan biner. Karena Anda sedang menulis file .jpg, sepertinya baik-baik saja.
Tetapi jika Anda seharusnya membaca file jpg itu, Anda perlu menggunakan 'rb'
Info lebih lanjut
Pada Windows, 'b' ditambahkan ke mode membuka file dalam mode biner, jadi ada juga mode seperti 'rb', 'wb', dan 'r + b'. Python di Windows membuat perbedaan antara file teks dan biner; karakter akhir baris dalam file teks secara otomatis diubah sedikit ketika data dibaca atau ditulis. Modifikasi di balik layar ke file data ini baik-baik saja untuk file teks ASCII, tetapi itu akan merusak data biner seperti itu di file JPEG atau EXE.
fd.write("foo\n")
sebenarnya menulis pada disk foo\r\n
(perhatikan \r
).
The wb
menunjukkan bahwa file dibuka untuk menulis dalam modus biner.
Saat menulis dalam mode biner, Python tidak mengubah data seperti yang tertulis di file. Dalam mode teks (ketika b
dikecualikan seperti hanya w
atau ketika Anda menentukan mode teks dengan wt
), bagaimanapun, Python akan menyandikan teks berdasarkan pengkodean teks default. Selain itu, Python akan mengonversi akhiran baris ( \n
) menjadi apa pun akhir baris khusus platform, yang akan merusak file biner seperti exe
atau png
file.
Oleh karena itu mode teks harus digunakan saat menulis file teks (baik menggunakan teks biasa atau format berbasis teks seperti CSV), sedangkan mode biner harus digunakan saat menulis file non-teks seperti gambar.
Referensi:
https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files https://docs.python.org/3/library/functions.html#open
wb
opsi. Dengan menggunakan w
opsi ini, saya bisa membuatnya berfungsi dengan baik.
b
mode hanya berpengaruh pada Windows. Itu sekarang telah dihapus dari dokumentasi dan mode biner "harus digunakan untuk semua file yang tidak berisi teks".
Itu adalah mode yang Anda gunakan untuk membuka file. "wb" berarti Anda menulis ke file (w), dan Anda menulis dalam mode biner (b).
Lihat dokumentasi untuk lebih lanjut: clicky
open
bukanfile
.file
tidak digunakan lagi di Python 2 (tidak dapat menemukan versi mana) dan telah dihapus di py3k. (terima kasih Scott) Lihat pertanyaan ini untuk info lebih lanjut.