\

Pythonで大きなファイルをコピーする際、進行状況を表示することは非常に便利です。以下に、進行状況バー付きでファイルをコピーする方法を示します。

まず、進行状況バーを表示するためのクラスを作成します。このクラスは、進行状況を表示するためのシンボルと、進行状況バーの幅を管理します。

class ProgressBar:
    def __init__(self, width=20, progress_symbol='▣', empty_symbol='□'):
        self.width = width
        self.progress_symbol = progress_symbol
        self.empty_symbol = empty_symbol
        self.progress = 0

    def update(self, progress):
        self.progress = progress
        filled_blocks = int(round(progress / (100 / float(self.width))))
        empty_blocks = self.width - filled_blocks
        progress_bar = self.progress_symbol * filled_blocks + self.empty_symbol * empty_blocks
        print('\r{0} {1}%'.format(progress_bar, progress), end='')

次に、このProgressBarクラスを使用して、進行状況バー付きでファイルをコピーする関数を作成します。

import shutil

def copy_with_progress(src, dest, callback=None):
    with open(src, 'rb') as fsrc, open(dest, 'wb') as fdst:
        total = os.path.getsize(src)
        pb = ProgressBar()
        while True:
            buf = fsrc.read(1024*1024)  # Adjust to your needs.
            if not buf:
                break
            fdst.write(buf)
            progress = fsrc.tell() * 100 / total
            pb.update(progress)

この関数は、ソースファイルを開き、目的地のファイルに書き込みます。各ループの後で、進行状況バーを更新します。

以上がPythonで進行状況バー付きのファイルコピーを行う方法です。大きなファイルを扱う際には、このような進行状況バーが非常に便利です。

投稿者 admin

コメントを残す

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