Acompanhe o progresso do download do arquivo S3 usando boto3 e retornos de chamada

Estou tentando baixar um arquivo de texto do S3 usando o boto3.

Aqui está o que eu escrevi.

class ProgressPercentage(object):
    def __init__(self, filename):
        self._filename = filename
        self._size = float(os.path.getsize(filename))
        self._seen_so_far = 0
        self._lock = threading.Lock()

    def __call__(self, bytes_amount):
        # To simplify we'll assume this is hooked up
        # to a single filename.
        with self._lock:
            self._seen_so_far += bytes_amount
            percentage = round((self._seen_so_far / self._size) * 100,2)
            LoggingFile('{} is the file name. {} out of {} done. The percentage completed is {} %'.format(str(self._filename), str(self._seen_so_far), str(self._size),str(percentage)))
            sys.stdout.flush()

e eu estou chamando isso usando

transfer.download_file(BUCKET_NAME,FILE_NAME,'{}{}'.format(LOCAL_PATH_TEMP , FILE_NAME),callback = ProgressPercentage(LOCAL_PATH_TEMP + FILE_NAME))

isso está me dando um erro de que o arquivo não está presente na pasta Aparentemente, quando eu já tenho um arquivo com esse nome na mesma pasta, ele funciona, mas quando estou baixando um arquivo novo, ele gera erros.

O que é a correção que preciso fazer?

questionAnswers(5)

yourAnswerToTheQuestion