2015-04-12 36 views
-2

我想寫一個.png文件,我使用Python從網上檢索。難以編寫.png文件python

with open(fileName, 'w+') as f: 
     f.write(data) 

'的ASCII' 編解碼器不能編碼字符U位置0 '\ ufffd':在範圍序數不(128)

我試圖做data.encode('utf-8'),但是當我使用魔法與Python到獲取MIME類型,它會將其檢測爲.bin文件。

是否有任何定義的方式來處理這個問題?這有時發生,而不是其他發生。

這裏的一些信息:

Github link to code

API reference

+1

你似乎從HTTP請求接收數據作爲'unicode'而不是'str'(或Python3上的'bytes')。這是錯誤的,因爲你的二進制PNG數據不是文本,並且unicode在二進制數據的上下文中沒有意義。你能發佈你用來從網頁上獲取文件的代碼嗎? –

回答

1

你需要以二進制方式打開文件:

with open(fileName, 'wb') as f: 
    f.write(data) 
+0

這是必需的(在Windows上),但不一定足夠。它看起來好像OP從HTTP請求中接收數據爲「unicode」 - 這不可能是正確的,因爲它不是文本數據,並且不會將它寫入文件,除非他用完全相同的方式解碼它編碼用於編碼數據。 –

+0

我已經試過了。其他Python模塊如何知道它是二進制的?我正在使用的那個只接受一個文件路徑。 – John