bra*_*orm -1 python unicode file-io python-requests
我试图.jpg
使用requests
python中的模块从URL 下载文件.这是我试过的.没有错误.但是我无法打开输出文件.
>>> import requests
>>> l = requests.get("http://www.mosta2bal.com/vb/imgcache/2/9086screen.jpg")
>>> l
<Response [200]>
>>> l.text
u'\ufffd\ufffd\ufffd\ufffd\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\ufffd\ufffd\x12EExif\x00\x00MM\x00*\x00\x00\x00\x08\x00\x07\x01\x12\x00\x03\x......long text
>>> l.encoding
>>> import codecs
>>> f = codecs.open('out.jpg', mode="w", encoding="utf-8")
>>> f.write(l.text)
Run Code Online (Sandbox Code Playgroud)
您正在尝试访问二进制数据,就像它是文本一样.这意味着请求必须猜测它的编码(并且它所做的任何猜测都是错误的,因为它不是文本)并解码它...只是这样你就可以解码它utf-8
.如果你真的很幸运,也许Requests会猜测UTF-8,而你的数据恰好是可以作为UTF-8进行往返的数据,所以它最多只能工作一千次.
只需询问二进制响应内容请求,并将其保存为二进制文件.
虽然我们在这里,但你从来没有真正close
的文件.你只是坐在交互式解释器中,还有一个file
尚未flush
编辑的开放对象.因此,完全有可能最后一个缓冲区的数据,甚至所有数据都不会存在.这正是该with
声明的用途.
所以:
l = requests.get("http://www.mosta2bal.com/vb/imgcache/2/9086screen.jpg")
with open('out.jpg', 'wb') as f:
f.write(l.content)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
961 次 |
最近记录: |