难以用python编写.png文件

难以用python编写.png文件,python,encoding,bin,contextio,Python,Encoding,Bin,Contextio,我正在尝试编写一个.png文件,用Python从web上检索该文件 with open(fileName, 'w+') as f: f.write(data) “ascii”编解码器无法对位置0中的字符u'\ufffd'进行编码:序号不在范围内(128) 我尝试执行data.encode('utf-8'),但当我使用Python的magic来获取mime类型时,它会将其检测为.bin文件 有没有明确的方法来处理这个问题?这种情况有时会发生,有时不会 以下是更多信息: 您需要以二

我正在尝试编写一个.png文件,用Python从web上检索该文件

with open(fileName, 'w+') as f: 
      f.write(data)
“ascii”编解码器无法对位置0中的字符u'\ufffd'进行编码:序号不在范围内(128)

我尝试执行
data.encode('utf-8')
,但当我使用Python的magic来获取mime类型时,它会将其检测为.bin文件

有没有明确的方法来处理这个问题?这种情况有时会发生,有时不会

以下是更多信息:


您需要以二进制模式打开文件:

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

这是必需的(在Windows上),但不一定足够。看起来OP从HTTP请求中接收的数据是
unicode
,这不可能是正确的,因为它不是文本数据,并且无法将其写入文件,除非他使用与数据编码完全相同的编码对其进行解码。我已经试过了。其他Python模块如何知道它是二进制的?我正在使用的是一个仅接受文件路径。您似乎正在以
unicode
而不是
str
(或Python3上的
字节
)的形式从HTTP请求接收数据。这是错误的,因为二进制PNG数据不是文本,而unicode在二进制数据的上下文中没有任何意义。你能发布你用来从网上获取文件的代码吗?