Kod:
file('pinax/media/a.jpg', 'wb')
open
yerine kullanın . Stackoverflow.com/questions/112970/…file
Kod:
file('pinax/media/a.jpg', 'wb')
open
yerine kullanın . Stackoverflow.com/questions/112970/…file
Yanıtlar:
Dosya modu , yazma ve ikili. .Jpg dosyası yazdığınız için iyi görünüyor.
Ancak o jpg dosyasını okumanız gerekiyorsa, 'rb'
Daha fazla bilgi
Windows'ta, kipe eklenen 'b', dosyayı ikili kipte açar, dolayısıyla 'rb', 'wb' ve 'r + b' gibi kipler de vardır. Windows üzerinde Python, metin ve ikili dosyalar arasında bir ayrım yapar; metin dosyalarındaki satır sonu karakterleri, veriler okunurken veya yazılırken otomatik olarak biraz değiştirilir. Dosya verilerinde yapılan bu perde arkası değişikliği ASCII metin dosyaları için iyidir, ancak JPEG veya EXE dosyalarındaki gibi ikili verileri bozar.
fd.write("foo\n")
aslında diske yazar foo\r\n
(not edin \r
).
wb
Dosya ikili modda yazılması için açık olduğunu belirtir.
İkili modda yazarken, Python dosyaya yazılırken verilerde hiçbir değişiklik yapmaz. Metin modunda ( b
sadece olduğu gibi hariç tutulduğunda w
veya metin modunu ile belirttiğinizde wt
), Python metni varsayılan metin kodlamasına göre kodlayacaktır. Ek olarak Python, satır sonlarını ( \n
) platforma özgü satır sonu ne olursa olsun, bir exe
veya png
dosya gibi ikili bir dosyayı bozacak şekilde dönüştürecektir .
Bu nedenle metin modu, metin dosyaları yazılırken (ister düz metin ister CSV gibi metin tabanlı bir format kullanarak) kullanılmalıdır; ikili mod ise resimler gibi metin olmayan dosyalar yazılırken kullanılmalıdır.
Referanslar:
https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files https://docs.python.org/3/library/functions.html#open
wb
Seçenekle açılan bir metin dosyasına (CSV biçimi, sonuçta o kadar önemli değil) yazmaya çalışırken bir hata aldım . Bunun w
yerine seçeneği kullanarak, düzgün çalışmasını sağlayabildim.
b
modun yalnızca Windows üzerinde bir etkisi olduğunu söyledi . Bu artık dokümantasyondan kaldırılmıştır ve ikili mod "metin içermeyen tüm dosyalar için kullanılmalıdır".
Dosyayı açtığınız mod budur. "wb" (w) dosyasına yazdığınız ve ikili modda (b) yazdığınız anlamına gelir.
Daha fazlası için belgelere göz atın: Clicky
open
bunun yerine kullanmayı düşünmelisinizfile
.file
Python 2'de kullanımdan kaldırıldı (hangi sürümü bulamadı) ve py3k'de kaldırıldı. (teşekkürler Scott) Daha fazla bilgi için bu soruya bakın .