Python 给下载文件显示进度条和下载时间的实现

  1. 使用urllib库下载文件并显示进度条和下载时间

首先,我们需要导入必要的库:urllib.request、tqdm、time。

import urllib.request
from tqdm import tqdm
import time

然后,我们定义一个函数来下载文件。这个函数需要传入两个参数:文件的url和保存路径。

def download_file_with_progressbar(url, save_path):
    # 发送请求
    response = urllib.request.urlopen(url)
    file_size = int(response.headers["Content-Length"])

    # 下载文件并显示进度条
    print("Downloading...")
    with tqdm(total=file_size, unit="B", unit_scale=True) as pbar:
        with open(save_path, "wb") as file:
            while True:
                buffer = response.read(1024)
                if not buffer:
                    break
                file.write(buffer)
                pbar.update(len(buffer))

    # 显示下载时间
    print("Download complete!")
    print(f"Time cost: {time.perf_counter():.2f}s")

这个函数的实现过程比较简单:

  • 发送请求获取文件的大小
  • 使用tqdm库创建进度条并下载文件
  • 使用time库记录下载时间并输出

我们可以使用这个函数来下载一张图片。

url = "https://upload.wikimedia.org/wikipedia/commons/0/05/Personality_factors.png"
save_path = "personality_factors.png"
download_file_with_progressbar(url, save_path)

下载完成后,控制台会输出下载进度条和下载时间:

Downloading...
100%|██████████| 422k/422k [00:03<00:00, 105kB/s]
Download complete!
Time cost: 4.03s
  1. 使用requests库下载文件并显示进度条和下载时间

我们可以使用requests库来下载文件,它的API会比urllib库更为简单。

首先,我们需要导入必要的库:requests、tqdm、time。

import requests
from tqdm import tqdm
import time

然后,我们定义一个函数来下载文件。这个函数需要传入两个参数:文件的url和保存路径。

def download_file_with_progressbar(url, save_path):
    # 发送请求
    response = requests.get(url, stream=True)
    file_size = int(response.headers.get("Content-Length", 0))

    # 下载文件并显示进度条
    print("Downloading...")
    with tqdm(total=file_size, unit="B", unit_scale=True) as pbar:
        with open(save_path, "wb") as file:
            for chunk in response.iter_content(1024):
                file.write(chunk)
                pbar.update(len(chunk))

    # 显示下载时间
    print("Download complete!")
    print(f"Time cost: {time.perf_counter():.2f}s")

这个函数的实现过程也比较简单:

  • 发送请求获取文件的大小
  • 使用tqdm库创建进度条并下载文件
  • 使用time库记录下载时间并输出

我们可以使用这个函数来下载一张图片。

url = "https://upload.wikimedia.org/wikipedia/commons/0/05/Personality_factors.png"
save_path = "personality_factors.png"
download_file_with_progressbar(url, save_path)

下载完成后,控制台会输出下载进度条和下载时间:

Downloading...
100%|██████████| 422k/422k [00:03<00:00, 105kB/s]
Download complete!
Time cost: 4.03s

至此,我们已经成功实现了 Python 给下载文件显示进度条和下载时间的实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 给下载文件显示进度条和下载时间的实现 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • 用Python实现爬取百度热搜信息

    下面是用Python实现爬取百度热搜信息的完整攻略: 1. 确定爬取目标 首先,我们需要确定需要爬取的内容。在本例中,我们的爬取目标是百度热搜列表。 2. 获取页面源码 我们需要使用Python获取百度热搜页面的源码。这可以通过requests库来实现。具体代码如下: import requests url = ‘https://www.baidu.com/…

    python 2023年5月14日
    00
  • 详细分析Python collections工具库

    详细分析Python collections工具库 collections是Python内置模块之一,它提供了许多有用的数据类型,以及一组针对这些数据类型的接口。本文将介绍collections模块中的几个常用数据类型,并提供一些示例说明。 Counter Counter是一个简单的计数器,用于统计元素出现的次数。它可以接受任何序列类型作为输入,并将元素存储…

    python 2023年6月3日
    00
  • python列表推导式操作解析

    下面是关于Python列表推导式的详细解析。 什么是列表推导式? Python列表推导式(List Comprehension)是一种快速简单地从一个列表中创建另一个列表的方法。它将for循环和条件语句合并到了一个简洁的语法中。这是Python中非常受欢迎的一个特性,可以让我们以更精简的方式快速地处理数据。 下面是一个基本的列表推导式的语法: new_lis…

    python 2023年5月13日
    00
  • Python命令行定时任务自动化工作流程

    下面我给您详细讲解一下“Python命令行定时任务自动化工作流程”的完整攻略: 1. 背景介绍 在实际工作中,我们经常需要定时执行某些任务,如每天对数据进行备份、定时发送邮件等。使用Python可以很方便地实现这些定时任务的自动化执行,从而减少工作量,提高效率。 2. 工作流程 Python命令行定时任务自动化工作流程一般包括以下步骤: 安装依赖包:需要安装…

    python 2023年5月19日
    00
  • pygame实现俄罗斯方块游戏(AI篇1)

    关于“pygame实现俄罗斯方块游戏(AI篇1)”的完整攻略,我可以给您提供以下分步解释: 1. 准备工作 在开发前,我们需要安装Python3.7+和相关的库,如pygame, numpy和scikit-learn等。 2. 设计游戏界面 首先,我们需要策划一个游戏界面。可以使用pygame库中的sprite和surface模块来设计各种游戏元素(如方块、…

    python 2023年6月2日
    00
  • Matplotlib中文乱码的3种解决方案

    以下是Matplotlib中文乱码的3种解决方案的详细攻略。 问题描述 Matplotlib是Python中一个非常流行的数据可视化库,但是在使用过程中,可能会出现中文乱码的问题,这是因为Matplotlib默认使用的字体不支持中文字符。本文将介绍三种解决方案。 方案一:修改默认字体 在Matplotlib中,可以通过修改默认字体的方式解决中文乱码的问题。具…

    python 2023年5月20日
    00
  • 对Python中画图时候的线类型详解

    对Python中画图时候的线类型详解 在Python中,我们可以使用很多不同类型的线条来绘制图表,每种线条都有不同的用途和效果。下面是一些主要的线条类型,以及它们在Python中的用法和效果。 直线 直线是最基本的线条类型之一,可以通过plot函数来绘制。默认情况下,plot函数会绘制一条实线,线条颜色为蓝色。 import matplotlib.pyplo…

    python 2023年5月18日
    00
  • python中提高pip install速度

    下面是 Python 中提高 pip 安装速度的攻略: 1. 使用国内镜像站点 使用国内镜像站点可以加快 pip 的下载速度。下面以清华大学镜像站为例: 打开命令行工具(如 CMD、终端),进入到用户目录下,新增或编辑 .pip/pip.conf 文件(如果该文件不存在则新建)。 在打开的文件中添加以下内容: [global]trusted-host=mir…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部