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中def是做什么的

    在Python中,def是用来定义函数的关键字。函数是一种可重用的代码块,其目的是在调用它时执行特定的任务。具体来说,def关键字在Python中用来创建一个函数对象,该函数对象可以带有参数和返回值。 下面是一个简单的示例,演示如何使用def关键字来定义一个函数: def greet(name): print("Hello, " + na…

    python 2023年6月3日
    00
  • Python调用微信公众平台接口操作示例

    下面我将详细讲解“Python调用微信公众平台接口操作示例”的完整攻略: 1. 准备工作 在开始使用微信公众平台接口之前,您需要进行以下操作: 注册微信公众号,并获取公众号的APPID和APPSECRET。 将服务器IP地址添加到公众号的IP白名单中,以确保可以正常连接微信服务器。 此外,您还需要安装Python的Requests库以便对微信接口进行网络请求…

    python 2023年6月3日
    00
  • 3种Python 实现酷炫进度条的实用方法

    下面是关于“3种Python 实现酷炫进度条的实用方法”的完整攻略。 标题 引言 在许多工作场合,需要对代码中的进度进行监控,而进度条正是一种好的展示方式,能够帮助人们更好地掌握代码的运行状态。Python作为一门高效的编程语言,实现进度条也毫不困难。这篇文章将会介绍3种Python实现酷炫进度条的实用方法。 第一种方法:tqdm模块 tqdm是Python…

    python 2023年6月3日
    00
  • 如何检查一个给定的NumPy数组的元素是否为非零

    检查给定NumPy数组中元素是否为非零的方法有多种,下面分别介绍两种方法。 方法一:使用numpy.nonzero()函数 使用numpy.nonzero()函数可以获得指定数组中非零元素的下标。 具体的操作方法如下: 导入numpy模块:import numpy as np 创建一个NumPy数组:a = np.array([0, 1, 2, 0, 0, …

    python-answer 2023年3月25日
    00
  • Python 如何定义匿名或内联函数

    下面是Python如何定义匿名或内联函数的完整攻略。 1. 什么是匿名函数 Python中的匿名函数也称为Lambda函数,是一种没有名称的函数,通常用在函数需要作为参数传递给其他函数的场合中。Lambda函数是一种临时构建的小型函数,它可以接受任意多个参数并返回一个表达式计算的结果。 2. 如何定义匿名函数 Python中定义Lambda函数的语法非常简洁…

    python 2023年6月5日
    00
  • Python统计学一数据的概括性度量详解

    Python统计学一数据的概括性度量详解 在统计学中,我们需要使用概括性度量来描述数据的特征,这样可以让我们更好地理解数据分布和变异性。Python中有丰富的函数库来管理数据,所以也有很多可用于计算概括性度量的函数。 1. 数据的基本概括性度量 1.1 均值 均值是最常见的区分数据集中趋势的量。均值是数据点的和除以数据点的数量。 在Python中,我们可以使…

    python 2023年6月5日
    00
  • python字典的常用操作方法小结

    下面是关于“python字典的常用操作方法小结”的完整攻略: 一、字典简介 字典(Dictionary)是Python中的一种基本数据结构,类似于其他编程语言中的“关联数组”或“哈希表”。字典由键值对(key-value pair)组成,在字典中,键必须独一无二,而值可以重复。举例来说,一个字典可以像这样定义: my_dict = {‘key1’: ‘val…

    python 2023年5月13日
    00
  • python学习实操案例(三)

    《Python学习实操案例(三)》是一篇关于Python实战应用的文献,主要讲述了基于API获取天气数据并进行简单可视化的项目。下面是该项目的详细攻略: 一、背景介绍 介绍天气数据可视化的基本概念和优势,以及介绍使用的工具和平台。 二、API的基本概念 介绍API的定义,分类,以及API的读取方式。 三、使用心知天气API 介绍心知天气API的使用方式,包括…

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