Python 正在下载带有urlopen/shutil的web映像:错误\uu退出__

Python 正在下载带有urlopen/shutil的web映像:错误\uu退出__,python,download,urlopen,shutil,webimage,Python,Download,Urlopen,Shutil,Webimage,我正在尝试使用shutil/urlopen下载图像,因为不推荐使用?我不确定它是否被弃用,但urlretrieve并没有下载该文件,它只是创建了一个图像名称的文件夹。在看了另一个问题后,我看到了一个提供此代码的问题,但我在这个问题上也得到了一个错误 from urllib2 import urlopen from shutil import copyfileobj url = 'http://www.watchcartoononline.com/thumbs/South-Park-Seaso

我正在尝试使用shutil/urlopen下载图像,因为不推荐使用?我不确定它是否被弃用,但urlretrieve并没有下载该文件,它只是创建了一个图像名称的文件夹。在看了另一个问题后,我看到了一个提供此代码的问题,但我在这个问题上也得到了一个错误

from urllib2 import urlopen
from shutil import copyfileobj


url = 'http://www.watchcartoononline.com/thumbs/South-Park-Season-14-Episode-11-Coon-2-Hindsight.jpg'
path = 'image.jpg'

with urlopen(url) as in_stream, open(path, 'wb') as out_file:
    copyfileobj(in_stream, out_file)
输出

with urlopen(url) as in_stream, open(path, 'wb') as out_file:
AttributeError: addinfourl instance has no attribute '__exit__

urlopen
未实现上下文管理器,因此不能在
with
块中使用它。这是你的电话号码

您可以使用
contextlib.closing
来包装它,尽管上面的bug报告也提到了一些问题


注意:这仅适用于Python<3.2

urlopen
未实现上下文管理器,因此不能在带有
块的
中使用它。这是你的电话号码

您可以使用
contextlib.closing
来包装它,尽管上面的bug报告也提到了一些问题

注意:这仅适用于Python<3.2

尝试以下方法:

import urllib
urllib.urlretrieve("http://url/img.jpg", "img.jpg")
试试这个:

import urllib
urllib.urlretrieve("http://url/img.jpg", "img.jpg")

urlopen
不是Python 2中的上下文管理器(我不知道3)。您必须手动打开和关闭它:

in_stream = urlopen(url)

with open(path, 'wb') as out_file:
    copyfileobj(in_stream, out_file)

in_stream.close()
您也可以只使用
urllib.urlretrieve

import urllib

urllib.urlretrieve(url, path)

它以块的形式读/写,让您可以干净地下载大文件。

urlopen
在Python 2中不是上下文管理器(我不知道3)。您必须手动打开和关闭它:

in_stream = urlopen(url)

with open(path, 'wb') as out_file:
    copyfileobj(in_stream, out_file)

in_stream.close()
您也可以只使用
urllib.urlretrieve

import urllib

urllib.urlretrieve(url, path)

它分块读/写,可以让你干净地下载大文件。

正如我在问题中所说,urlretrieve无法工作,因为我下载的站点有它的图像deprecated@Crispy:你确定你要找的词是deprecated吗?这个词我可能弄错了,因为我的编程术语不是很好。@Crispy如果你需要下载这个文件,请使用这个解决方案。我不确定您所说的不推荐是什么意思,但是
urlretrieve
几乎等同于您在那里所做的。是的,我尝试使用urlretrieve,它现在可以工作了。正如我在问题中所说的那样,我在意外事件中创建了一个我的图像名称目录,urlretrieve无法工作,因为我下载的站点有它的图像deprecated@Crispy:你确定你要找的词是deprecated吗?这个词我可能弄错了,因为我的编程术语不是很好。@Crispy如果你需要下载这个文件,请使用这个解决方案。我不确定您所说的不推荐是什么意思,但是
urlretrieve
几乎等同于您在那里所做的。是的,我尝试使用urlretrieve,它现在可以工作了。我正在制作一个关于我在事故中的形象名字的目录