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

时间:2017-09-17 14:44:19

标签: python linux python-3.x ubuntu urllib

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

  • 检查计算机是否在线(已连接到互联网)。并且只有在真实时继续。

  • 如果在此期间连接丢失或太糟糕,请重新启动文件下载。

如果可能的话,我希望尽可能少地使用包。 这是我的实际代码:

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

要检查是否已建立连接,我相信我可以执行类似

的操作
while connection() is true:
   Download()

但那会多次下载..

我在Linux上工作。

2 个答案:

答案 0 :(得分:1)

我建议你结合使用try,while和sleep功能。像这样:

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 :(得分:0)

时将替换为,如果,则其下的所有内容只会运行一次。

if connection() == True:
   Download()

另外,connection()函数可能是这样的:

try:    
    urllib.urlopen(url, timeout=5)
    return True
return False