\

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でファイルコピーの進捗を表示する方法です。大量のファイルを扱う際には、このような進捗表示が非常に便利です。ぜひ試してみてください。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です