[2022/7/10]Python实现简单的下载器
学习了一周python,写个文件下载器实践一下,技术含量不高,主要是用作练习
效果展示
只能接受格式正常的链接,暂时就这样了吧,如果之后遇到了相关需求可能会回来改进
源代码展示
import os
import urllib
import requests
import time
class DLer: #Downloader下载器
DL_route = r'Download/'#下载的文件存放路径
file_type = None #下载的文件类型
def __init__(self):
if not os.path.exists(self.DL_route): #检查下载路径是否存在,不存在则生成
os.makedirs(self.DL_route)
def __url_check(self): #网址格式检查
try:
web = requests.get(self.url, timeout=3.0) #发送请求检测链接是否正常
if web.status_code == 200:
return True
else:
return False
except:
return False
def __type_handling(self):#处理文件种类(后缀)
url_len = len(self.url)
flag = 0
for x in range(0,url_len):
if self.url[url_len-1-x] == '.':#逆序检查url,找出能区分后缀的“.”
flag = url_len-1 - x
self.file_type = self.url[int(flag):]
break
elif self.url[url_len-1-x] == r'/':#如果找到‘/’,文件类型置空
self.file_type = ''
break;
def __file_handling(self): #处理文件
r = requests.get(self.url)
cnt = 0
while(True):
if os.path.exists(self.DL_route + str(cnt) + str(self.file_type)):#给下载文件以数字命名
cnt += 1
else:
break
with open(self.DL_route + str(cnt) + str(self.file_type),'wb') as f:#以二进制写入
f.write(r.content)
def download(self,url):
self.url = str(url)
if self.__url_check():
print('开始下载...')
self.__type_handling()
self.__file_handling()
return True
else:
return False
a = DLer()#创建一个下载器a
DL_url = input('请输入下载链接:')
tick1 = time.time()
if a.download(DL_url):
tick2 = time.time()
print('下载完成,共耗时'+str(round(tick2-tick1,3))+'秒')
print ('下载的文件已存放在'+str(os.getcwd())+r'/'+a.DL_route)
else:
print('下载失败,请检查您的网络状况或检查链接是否正确')
源代码下载
作者:WWQ