回答
File mode,寫和二進制。既然你正在寫一個.jpg文件,它看起來很好。
但是,如果你應該閱讀JPG文件,你需要使用'rb'
更多信息
在Windows中,「B」附加到模式 以二進制方式打開文件,所以 還有'rb','wb', 和'r + b'等模式。 Windows上的Python使 文件與二進制文件 之間的區別;當讀取或寫入數據時, 文本文件中的行尾字符會自動更改爲 。 對 文件數據的這種後臺修改對於ASCII文本 文件來說很好,但它會像JPEG或EXE文件中那樣破壞二進制數據 。
這是打開文件的模式。 「wb」表示您正在寫入文件(w),並且您正在以二進制模式寫入(b)。
退房文檔以瞭解更多:clicky
的wb
表明該文件被打開以二進制方式寫作。
在Unix系統(Linux,Mac OS X等)上,二進制模式什麼都不做 - 它們將文本文件視爲處理任何其他文件的方式。但是,在Windows上,文本文件的寫入略有修改後的行尾。這在處理實際的二進制文件時會導致嚴重的問題,如exe
或jpg
文件。因此,當打開不應該是文本的文件時,即使在Unix中,也應該使用wb
或rb
。僅對文本文件使用普通的w
或r
。
參考:http://docs.python.org/tutorial/inputoutput.html#reading-and-writing-files
你也應該考慮使用open
代替file
。 file
在Python 2中被棄用(找不到哪個版本)並且已經在py3k中被刪除。 (感謝斯科特)
請參閱this question瞭解更多信息。
這個答案可能會更好,作爲對第一個答案的評論。 – 2010-04-19 13:39:39
使用'file'而不是'open'已經在Python 2中被棄用了一段時間了。它已被*刪除*從Python 3. – 2010-04-19 17:10:08
@斯科特:謝謝,編輯我的答案。 @布萊恩:你說得對,下次我會做,謝謝。 – 2010-04-20 12:04:40
- 1. 這段代碼是什麼意思...?
- 2. 這段Ruby代碼是什麼意思?
- 3. 這段代碼是什麼意思?
- 4. 這段代碼是什麼意思?
- 5. 這段代碼是什麼意思?
- 6. 這段代碼是什麼意思?
- 7. 這段代碼是什麼意思?
- 8. 這段代碼是什麼意思?
- 9. 這段代碼是什麼意思?
- 10. 這段代碼是什麼意思?
- 11. 這段Perl代碼是什麼意思?
- 12. 這段代碼是什麼意思?
- 13. 這段代碼是什麼意思? $ .getJSON
- 14. 這段代碼是什麼意思?
- 15. 這段代碼是什麼意思?
- 16. 這段代碼是什麼意思?
- 17. 這段代碼是什麼意思?
- 18. 這段代碼是什麼意思?
- 19. 這段代碼是什麼意思?
- 20. 這段代碼是什麼意思?
- 21. 這段代碼是什麼意思?
- 22. 這段代碼是什麼意思?
- 23. 這個python代碼是什麼意思?
- 24. PHP源代碼中的這段代碼是什麼意思?
- 25. 0x0F是什麼意思?這個代碼是什麼意思?
- 26. 這段代碼片段中的「:」是什麼意思?
- 27. 這個代碼中'$'是什麼意思?
- 28. 這段JavaScript代碼是什麼意思? 「使用String.fromCharCode」
- 29. 這是什麼C++代碼的意思
- 30. 子變量數組中的這段代碼是什麼意思?
具體來說,在文本模式下打開的文件的Windows中,'fd.write(「foo \ n」)'實際寫入磁盤'foo \ r \ n'(注意'\ r')。 – 2014-08-21 05:48:28