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程序打印元组的键和值使用方法的完整攻略。 一、元组 元组(Tuple)是Python中的不可变(immutable)有序序列,可以用来存储多个值。元组使用圆括号 () 表示,多个值之间使用逗号,例如: t = (1, 2, ‘a’, ‘b’) 二、打印元组 Python提供了多种方法打印元组的键和值,下面介绍两种方法。 1.使用for循环打…

    python-answer 2023年3月25日
    00
  • python实现自动重启本程序的方法

    要实现Python程序的自动重启功能,主要利用Python的os和sys模块,以及subprocess库中的Popen方法。 以下是步骤: 1. 导入模块 为了实现自动重启功能,我们需要使用Python中的os、sys模块,以及subprocess库中的Popen方法。所以首先需要导入这些模块: import os import sys import sub…

    python 2023年5月19日
    00
  • 详解python函数传参传递dict/list/set等类型的问题

    详解Python函数传参传递dict/list/set等类型的问题 在Python中,函数传参是非常常见的操作。除了传递基本数据类型外,还可以传递dict、list、set等类型的数据。本文将详细讲解Python函数传参传递dict/list/set等类型的问题,包括传递方式传递后的影响、示例等。 传递方式 在Python中,函数传参可以通过两种方式进行,分…

    python 2023年5月13日
    00
  • python一键升级所有pip package的方法

    当我们的Python应用依赖于多个第三方库时,需要不断地手动升级这些库,这是一件非常繁琐的事情。本文将介绍如何使用一行命令对Python的所有第三方库进行一键升级。使用该方法,可以快速地将Python所依赖的所有库升级到最新版本。详细攻略如下: 打开终端,进入Python环境 在Mac或Linux环境下,我们可以通过终端进入Python环境。打开终端,输入以…

    python 2023年5月14日
    00
  • 从 Python 连接到 Apache Drill

    【问题标题】:Connect to Apache drill from Python从 Python 连接到 Apache Drill 【发布时间】:2023-04-04 00:48:01 【问题描述】: 有谁知道如何从 python 建立到 Apache Drill 的连接? 通常,通过pyodbc库的连接是这样的: connection = pyodbc…

    Python开发 2023年4月8日
    00
  • Python实战之多种音乐格式批量转换

    标题:Python实战:多种音乐格式批量转换攻略 简介 在日常使用中,我们可能会遇到需要将多种音乐格式批量转换的需求,例如将wav格式文件转换为mp3格式文件等。虽然市场上有很多音乐转换软件,但是它们的功能和效果往往有限。而使用Python编程实现音乐格式批量转换则具有更高的自由度和灵活性。本篇文章将详细讲解如何通过Python实现多种音乐格式批量转换的方法…

    python 2023年6月3日
    00
  • Android Market API – Python ImportError:没有名为 google.protobuf 的模块

    【问题标题】:Android Market API – Python ImportError: No module named google.protobufAndroid Market API – Python ImportError:没有名为 google.protobuf 的模块 【发布时间】:2023-04-01 07:06:01 【问题描述】: 基…

    Python开发 2023年4月8日
    00
  • python 制作手机归属地查询工具(附源码)

    Python制作手机归属地查询工具攻略 在Python中,我们可以使用requests库和正则表达式来制作一个简单的手机归属地查询工具。本文将详细讲解如何使用Python制作手机归属地查询工具,并提供两个示例。 环境配置 在使用Python制作手机归属地查询工具之前,我们需要先进行环境配置。以下是环境配置的步骤: 安装requests库 可以使用pip命令来…

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