urllib.urlretreive完全锁定了Python?

时间:2014-11-19 20:05:53

标签: python windows-7 urllib

以下是我正在尝试运行的内容:

from urllib import urlretrieve
urlretrieve('http://chromedriver.storage.googleapis.com/2.12/chromedriver_win32.zip', 'chromedriver_win32.zip')

我是否尝试将这些直接输入到Python的交互式会话中或将它们保存到脚本中然后尝试执行脚本,Python完全锁定并且永远不会恢复(我等了十分钟)。它甚至不会让我使用 ctrl + c 来退出Python - 我必须完全关闭终端。

如果我包含一个报告功能,它会显示整个文件被快速下载(约1秒) - 但它会锁定,就像我上面的示例中一样。

Python没有抛出异常,所以我不知道该怎么做。

如果我检入Windows文件资源管理器,它会显示zip文件位于我运行代码的目录中,但它显示为具有正确的大小,如果我尝试打开它,我会收到一条错误消息

  

Windows无法打开该文件夹。压缩(压缩)文件夹'[路径省略...]'无效。

如果我在Chrome中输入相同的网址,则会在一秒钟内下载该文件,Windows资源管理器可以正常打开该zip文件。

我在Windows 7上运行Python 2.7.8。

1 个答案:

答案 0 :(得分:0)

由于这似乎是Python标准库中的一个错误,我提交了一个错误报告并寻找解决方法。这就是我决定做的事情:

1 - 使用pip install requests安装请求。

2 - 在我的代码中使用它,如下所示:

from requests import get
from shutil   import copyfileobj

response = get('http://chromedriver.storage.googleapis.com/2.12/chromedriver_win32.zip', stream=True)
with open('chromedriver_win32.zip', 'wb') as f:
    copyfileobj(response.raw, f)

似乎工作正常 - Windows将下载的文件识别为具有适当大小的有效zip并正确解压缩。