Kod:
file('pinax/media/a.jpg', 'wb')
openyerine kullanın . Stackoverflow.com/questions/112970/…file
Kod:
file('pinax/media/a.jpg', 'wb')
openyerine 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).
wbDosya 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 ( bsadece olduğu gibi hariç tutulduğunda wveya 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 exeveya pngdosya 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
wbSeç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 wyerine seçeneği kullanarak, düzgün çalışmasını sağlayabildim.
bmodun 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
openbunun yerine kullanmayı düşünmelisinizfile.filePython 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 .