首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python和Urllib如何处理网络异常?

Python和Urllib如何处理网络异常?
EN

Stack Overflow用户
提问于 2017-09-17 14:44:19
回答 2查看 660关注 0票数 0

我正在编写一个简单的代码,即downloading a file over HTTP,使用包urlliburllib.request。除了我希望能够处理可能发生的网络问题外,一切都很好。

  • 检查计算机是否联机(连接到互联网)。只有在正确的情况下才能继续。
  • 如果在文件下载过程中连接丢失或太差,则重新启动该文件。

如果可能的话,我希望尽可能少使用软件包。以下是我的实际代码:

代码语言:javascript
复制
import urllib
import urllib.request
url = "http://my.site.com/myFile"
urlSplited = url.split('/')[-1];
print ("Downloading : "+urlSplited)
urllib.request.urlretrieve(url, urlSplited)

为了检查是否建立了连接,我相信我可以这样做

代码语言:javascript
复制
while connection() is true:
   Download()

但是那会使下载很多次..。

我在研究Linux。

EN

回答 2

Stack Overflow用户

发布于 2017-09-17 15:09:18

我建议你使用一种尝试,同时和睡眠功能的组合。如下所示:

代码语言:javascript
复制
import urllib
import urllib.request
import time
url = "http://my.site.com/myFile"
urlSplited = url.split('/')[-1];
try_again = True
print ("Downloading : "+urlSplited)

while try_again:
    try:
        urllib.request.urlretrieve(url, urlSplited, timeout = 100)
        try_again = False
    except Exception as e:
        print(e)
        time.sleep(600)
票数 1
EN

Stack Overflow用户

发布于 2017-09-17 14:51:01

替换为if,那么它下的所有操作将只运行一次。

代码语言:javascript
复制
if connection() == True:
   Download()

而且,connection()函数可以是这样的:

代码语言:javascript
复制
try:    
    urllib.urlopen(url, timeout=5)
    return True
return False
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46265315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档