Boto3

Output download percentage

class ProgressPercentage:
    """
    Show percentage progress bar used in file I/O situation (S3 upload)
    """
    def __init__(self, filename:str):
        self._filename = filename
        self._size = float(os.path.getsize(filename))
        self._seen_so_far = 0
        self._lock = threading.Lock()

    def __call__(self, bytes_amount:int):
        # To simplify, assume this is hooked up to a single filename
        with self._lock:
            self._seen_so_far += bytes_amount
            percentage = (self._seen_so_far / self._size) * 100
            sys.stdout.write(
                "\r%s  %s / %s  (%.2f%%)" % (
                    self._filename, 
                    self._seen_so_far, 
                    self._size,
                    percentage
                )
            )
            sys.stdout.flush()

Custom class

Last updated

Was this helpful?