Python 文件下载优化代码
def click_download_file(self, urn, path):
'点击下载按钮,下载文件'
downloaded_files_success = [] # 下载成功的文件列表
downloaded_files_failed = [] # 下载失败的文件列表
links = self.browser.safe_get_link(By.CSS_SELECTOR, ATTACHMENT_VIEW_WINDOW_ELEMENT)
for link in links:
# 获取文件名 文件大小
file_title, download_time_limit, file_size = self.file_title_data(link, urn)
self.download_file(link, urn, file_title, file_size, path, downloaded_files_success, downloaded_files_failed)
def download_file(self, link, urn, file_title, file_size, path, downloaded_files_success, downloaded_files_failed):
self.browser.click_with_link(link)
self.download_alert() # 文件下载过大
logger.info('
>> 【urn = {}】文件名{}文件大小{},下载时间{}'.format(urn, file_title, file_size, download_time_limit))
time.sleep(download_time_limit) # 文件下载时间
# 文件下载
status = self.download_file_is_successfully(path, file_title, file_size)
if status:
downloaded_files_success.append(file_title) # 下载成功
else:
attempt = 0
while attempt < 3: # 下载失败 重试下载
self.browser.click_with_link(link)
self.download_alert() # 重试需要点击文件下载过大
time.sleep(download_time_limit)
status = self.download_file_is_successfully(path, file_title, file_size)
if status:
downloaded_files_success.append(file_title) # 重试成功
logger.info('
>> 【urn = {}】文件{}重试下载成功'.format(urn, file_title))
break
else:
logger.info('
>> 【urn = {}】文件{}重试下载失败'.format(urn, file_title))
downloaded_files_failed.append(file_title) # 下载失败
attempt += 1
该代码优化了原代码的冗余,使用 while 循环代替 for 循环,提高了代码效率。代码使用 attempt 变量来记录重试次数,当重试次数达到 3 次时,会停止重试。
原文地址: https://www.cveoy.top/t/topic/qhu8 著作权归作者所有。请勿转载和采集!