我正在使用Python请求从Web保存图像文件。但是,保存的文件与原始文件有点二进制不同,而且有点大。它仍然是一个有效的jpg文件,但被打乱了。
这是代码:
import requests
import shutil
import os
if __name__ == "__main__":
image_url = 'http://www.123.com/image.jpg'
filename = 'out.jpg'
username = 'myusername'
password = 'mypasword'
path = os.path.join('c:/', filename )
r = requests.get(image_url, auth=(username, password), stream=True)
if r.status_code == 200:
with open(path, 'w') as f:
r.raw.decode_content = False
shutil.copyfileobj(r.raw, f)
print 'The End'
我做错了什么?
open(path, 'w')
应该是:
open(path, 'wb')
b
用于"二进制"。这将确保 Python 不会尝试转换字符编码和换行符,并完全按照逐字节的方式读取或写入所有内容。
另请参阅open()
文档