TA的每日心情 | 开心 2021-12-13 21:45 |
---|
签到天数: 15 天 [LV.4]偶尔看看III
|
https://blog.csdn.net/jclian91/article/details/77513289
但是经笔者测试,下载文件出现urllib.ContentTooShortError且重新下载文件会存在用时过长的问题,而且往往会尝试好几次,甚至十几次,偶尔会陷入死循环,这种情况是非常不理想的。为此,笔者利用socket模块,使得每次重新下载的时间变短,且避免陷入死循环,从而提高运行效率。
以下为代码: - [code]import socket
- import urllib.request
- #设置超时时间为30s socket.setdefaulttimeout(30) #解决下载不完全问题且避免陷入死循环 try: urllib.request.urlretrieve(url,image_name) except socket.timeout: count = 1 while count <= 5: try: urllib.request.urlretrieve(url,image_name) break except socket.timeout: err_info = "Reloading for %d time"%count if count == 1 else "Reloading for %d times"%count print(err_info) count += 1 if count > 5: print("downloading picture fialed!")
复制代码 [/code] |
|