Pythonで進捗バー付きのファイルのダウンロードを実装する方法

進捗バー付きファイルダウンロードは、`urllib.request`モジュールと`tqdm`ライブラリを使用して実装できます。

サンプルコードを以下に示します。

import urllib.request
from tqdm import tqdm
# 下载文件的URL
url = "https://example.com/file.zip"
# 文件保存路径
filepath = "file.zip"
# 创建一个进度条对象
progress_bar = tqdm(unit="B", unit_scale=True, unit_divisor=1024)
# 下载文件并显示进度条
urllib.request.urlretrieve(url, filepath, reporthook=lambda count, block_size, total_size: progress_bar.update(block_size))
# 关闭进度条
progress_bar.close()

上記のコードでは、変数`url`にダウンロードしたいファイルのURL、変数`filepath`にファイルを保存するパスを格納しています。そして、`urllib.request.urlretrieve()`メソッドでファイルをダウンロードし、`reporthook`パラメータで進捗バーの更新をおこなっています。

レポートフックのパラメーターは、ダウンロード中に呼び出される関数です。この関数は 3 つのパラメーターを受け取ります。count は、すでにダウンロードされたデータの塊の数、block_size は、各データの塊のサイズ、total_size は、ファイルの総サイズです。ダウンロードされたデータの塊の数と総サイズを計算することで、現在のダウンロードの進捗状況を計算できます。

上述のコードでは、tqdmライブラリを使ってprogress_barという進行状況バーオブジェクトを作成し、update()メソッドを使って進行状況バーをアップデートしています。unit=”B”は進行状況バーの単位がバイトであることを意味し、unit_scale=Trueは進行状況バーの数値が自動的に単位変換されることを意味し(例えば、KB、MBなど)、unit_divisor=1024は単位の換算基数が1024であることを意味します。

最後に、progress_bar.close()メソッドでプログレスバーを閉じます。

ダウンロードのさまざまな要件に合わせて、必要に応じてコードを修正できます。

bannerAds