2010-04-19 81 views

回答

65

File mode,寫和二進制。既然你正在寫一個.jpg文件,它看起來很好。

但是,如果你應該閱讀JPG文件,你需要使用'rb'

更多信息

在Windows中,「B」附加到模式 以二進制方式打開文件,所以 還有'rb','wb', 和'r + b'等模式。 Windows上的Python使 文件與二進制文件 之間的區別;當讀取或寫入數據時, 文本文件中的行尾字符會自動更改爲 。 對 文件數據的這種後臺修改對於ASCII文本 文件來說很好,但它會像JPEG或EXE文件中那樣破壞二進制數據 。

+3

具體來說,在文本模式下打開的文件的Windows中,'fd.write(「foo \ n」)'實際寫入磁盤'foo \ r \ n'(注意'\ r')。 – 2014-08-21 05:48:28

3

這是打開文件的模式。 「wb」表示您正在寫入文件(w),並且您正在以二進制模式寫入(b)。

退房文檔以瞭解更多:clicky

38

wb表明該文件被打開以二進制方式寫作。

在Unix系統(Linux,Mac OS X等)上,二進制模式什麼都不做 - 它們將文本文件視爲處理任何其他文件的方式。但是,在Windows上,文本文件的寫入略有修改後的行尾。這在處理實際的二進制文件時會導致嚴重的問題,如exejpg文件。因此,當打開不應該是文本的文件時,即使在Unix中,也應該使用wbrb。僅對文本文件使用普通的wr

參考:http://docs.python.org/tutorial/inputoutput.html#reading-and-writing-files

4

你也應該考慮使用open代替filefile在Python 2中被棄用(找不到哪個版本)並且已經在py3k中被刪除。 (感謝斯科特)

請參閱this question瞭解更多信息。

+1

這個答案可能會更好,作爲對第一個答案的評論。 – 2010-04-19 13:39:39

+2

使用'file'而不是'open'已經在Python 2中被棄用了一段時間了。它已被*刪除*從Python 3. – 2010-04-19 17:10:08

+0

@斯科特:謝謝,編輯我的答案。 @布萊恩:你說得對,下次我會做,謝謝。 – 2010-04-20 12:04:40