我正在尝试从链接中删除图片并将其放入图像文件中。请求响应返回一个字节流。所以我使用decode(' utf-8')转换为unicode流但是,我遇到以下错误:
print(info.decode((' utf-8')))
UnicodeDecodeError:' utf-8'编解码器不能解码位置0中的字节0xff:无效的起始字节
from urllib import request
img = request.urlopen('http://www.py4inf.com/cover.jpg')
fhand = open('cover.jpg', 'w')
size = 0
while True:
info = img.read(100000)
if len(info) < 1 : break
size = size + len(info)
print (info.decode(('utf-8')))
fhand.write(info.decode(('utf-8')))
print (size,'characters copied.')
fhand.close()
请告诉我如何处理。感谢。
答案 0 :(得分:3)
不要对JPG图像使用Unicode转换。
Unicode用于文本。你下载的不是文本,而是其他东西。
试试这个:
from urllib import request
img = request.urlopen('http://www.py4inf.com/cover.jpg')
fhand = open('cover.jpg', 'wb')
size = 0
while True:
info = img.read(100000)
if len(info) < 1 : break
size = size + len(info)
fhand.write(info)
print (size,'characters copied.')
或者更简单:
from urllib import request
request.urlretrieve('http://www.py4inf.com/cover.jpg', 'cover.jpg')
答案 1 :(得分:2)
该文件应以二进制模式打开,然后您可以将流字节复制为字节。由于shutil
已经有一个方便的帮助工具,你可以
import shutil
import os
from urllib import request
img = request.urlopen('http://www.py4inf.com/cover.jpg')
with open('cover.jpg', 'wb') as fhand:
shutil.copyfileobj(img, fhand)
print(os.stat('cover.jpg').st_size, 'characters copied')