def click_download_file(self, urn, path):
    '点击下载按钮,下载文件'
    downloaded_files_success = list()  # 下载成功的文件列表
    downloaded_files_failed = list()  # 下载失败的文件列表
    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.browser.click_with_link(link)
        self.download_alert()  # 文件下载过大
        logger.info(
            '\n >> 【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:
            retry_count = 3
            while retry_count > 0:  # 下载失败 重试下载
                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('\n >> 【urn = {}】文件{}重试下载成功'.format(urn, file_title))
                    break
                else:
                    logger.info('\n >> 【urn = {}】文件{}重试下载失败'.format(urn, file_title))
                    downloaded_files_failed.append(file_title)  # 下载失败
                    retry_count -= 1
    return downloaded_files_success, downloaded_files_failed

在优化后的代码中,我们使用 while 循环处理下载失败的重试逻辑,而不是使用重复的 for 循环。这使得代码更加简洁,更容易理解。

优化后的代码优点:

  • 减少了冗余代码,提高了代码的可读性。
  • 使用 while 循环可以更灵活地控制重试次数。
  • 代码逻辑更清晰,更容易维护。

代码说明:

  • retry_count 变量用来记录重试次数。
  • while 循环会持续执行,直到 retry_count 为 0 或文件下载成功。
  • 每次重试前,都会执行 click_with_link()download_alert()time.sleep() 操作。
  • 如果文件下载成功,则使用 break 语句退出循环。
  • 如果文件下载失败,则 retry_count 减 1,并继续循环。

通过使用 while 循环,我们可以有效地处理下载失败的重试逻辑,并提高代码的效率和可读性。

Python 文件下载函数优化 - 使用 while 循环重试下载

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

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