我正在使用包downloading a file over HTTP
和urllib
编写一个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上工作。
答案 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