我正在使用requests
模块连接到一个返回PNG图像的php脚本。如果我这样做:
import requests
r=requests.get("http://location/script.php", cookies=cookies)
fp = open("image.png", "wb")
fp.write(r.text) #r.text is the binary data for the PNG returned by that php script
fp.close()
但是在编写时它给出了一个UnicodeEncodeError,因此我使用了fp.write(r.text.encode("utf-8"))
而不是fp.write(r.text)
。
并且文件已创建,但我无法在图像查看器中查看它(它会出错)。但是,如果我右键单击并保存该脚本在Firefox中返回的PNG,我可以在保存后在同一个图像查看器中查看它。所以我猜我将图像数据写入文件的方式存在问题。
还有其他方法可以吗?
答案 0 :(得分:4)
r.text
不二进制数据。该属性为您提供解码后的文本,即Unicode值。
您希望使用r.content
代替将图像转换为文件设置stream=True
并从r.raw
文件对象进行复制。