Pythonで大量のファイルをコピーする際、その進捗状況を知りたいと思うことはよくあります。この記事では、Pythonでファイルコピーの進捗を表示する方法について解説します。
Pythonでファイルをコピーする
Pythonでファイルをコピーする基本的な方法は、shutil
モジュールのcopy()
関数を使用することです。この関数は、元のファイルと新たに作成されるコピーのパスを引数として受け取ります。
import shutil
# 元のファイルパスとコピー先のパス
src = "/path/to/original/file"
dst = "/path/to/copy/file"
# ファイルをコピー
shutil.copy(src, dst)
進捗表示のためのtqdm
モジュール
進捗表示のためには、tqdm
モジュールを使用します。tqdm
は、ループ処理の進捗状況を表示するためのモジュールで、非常に簡単に使用することができます。
from tqdm import tqdm
import time
# 進捗表示のためのループ
for i in tqdm(range(100)):
time.sleep(0.01) # 何か時間のかかる処理
このコードを実行すると、進捗バーが表示され、ループの進捗状況がリアルタイムで更新されます。
ファイルコピーの進捗を表示する
それでは、これらを組み合わせて、ファイルコピーの進捗を表示する方法を見てみましょう。
import os
import shutil
from tqdm import tqdm
# 元のファイルパスとコピー先のパス
src = "/path/to/original/file"
dst = "/path/to/copy/file"
# ファイルサイズを取得
total_size = os.path.getsize(src)
# 進捗バーの設定
with tqdm(total=total_size, unit='B', unit_scale=True) as pbar:
def callback(src, dst, transferred):
# 進捗バーを更新
pbar.update(transferred)
# ファイルをコピー
shutil.copyfileobj(open(src, 'rb'), open(dst, 'wb'), callback=callback)
このコードでは、shutil.copyfileobj()
関数を使用してファイルをコピーしています。この関数は、ファイルオブジェクトを直接扱うことができ、コピーの進捗を取得するためのコールバック関数を指定することができます。
以上が、Pythonでファイルコピーの進捗を表示する方法です。大量のファイルを扱う際には、このような進捗表示が非常に便利です。ぜひ試してみてください。