【发布时间】:2009-03-01 23:44:38
【问题描述】:
我正在循环下载包含以下代码的大量文件:
try:
urllib.urlretrieve(url2download, destination_on_local_filesystem)
except KeyboardInterrupt:
break
except:
print "Timed-out or got some other exception: "+url2download
如果连接刚开始时服务器在 URL url2download 上超时,则正确处理最后一个异常。但有时服务器响应,并开始下载,但服务器太慢,即使一个文件也需要几个小时,最终它会返回如下内容:
Enter username for Clients Only at albrightandomalley.com:
Enter password for in Clients Only at albrightandomalley.com:
然后就挂在那里(尽管如果通过浏览器下载相同的链接,则不会询问用户名/密码)。
在这种情况下,我的意图是 -- 跳过此文件并转到下一个文件。问题是——如何做到这一点? python有没有办法指定下载一个文件可以工作多长时间,如果已经花费了更多时间,则中断并继续?
【问题讨论】:
-
您看到的是服务器要求身份验证。默认情况下
urllib.urlretrieve()会提示用户输入用户名和密码。如果你想避免这种情况,你可以创建一个从urllib.FancyURLOpener派生的新类并自己处理这个“错误”。
标签: python exception-handling download