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 次时,会停止重试。

Python 文件下载优化代码

原文地址: https://www.cveoy.top/t/topic/qhu8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录