Rastree el progreso de descarga del archivo S3 usando boto3 y devoluciones de llamada
Estoy tratando de descargar un archivo de texto desde S3 usando boto3.
Aquí está lo que he escrito.
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()
y lo llamo usando
transfer.download_file(BUCKET_NAME,FILE_NAME,'{}{}'.format(LOCAL_PATH_TEMP , FILE_NAME),callback = ProgressPercentage(LOCAL_PATH_TEMP + FILE_NAME))
esto me está dando un error de que el archivo no está presente en la carpeta. Aparentemente, cuando ya tengo un archivo con este nombre en la misma carpeta, funciona, pero cuando descargo un archivo nuevo, se produce un error.
¿Qué corrección debo hacer?