Boto3 S3: Obtén archivos sin obtener carpetas
Con boto3, ¿cómo puedo recuperar todos los archivos en mi bucket de S3 sin recuperar las carpetas?
Considere la siguiente estructura de archivos:
file_1.txt
folder_1/
file_2.txt
file_3.txt
folder_2/
folder_3/
file_4.txt
En este ejemplo, solo estoy interesado en los 4 archivos.
EDITAR:
Una solución manual es:
def count_files_in_folder(prefix):
total = 0
keys = s3_client.list_objects(Bucket=bucket_name, Prefix=prefix)
for key in keys['Contents']:
if key['Key'][-1:] != '/':
total += 1
return total
En este caso el total sería 4.
Si acabo de hacer
count = len(s3_client.list_objects(Bucket=bucket_name, Prefix=prefix))
el resultado sería 7 objetos (4 archivos y 3 carpetas):
file.txt
folder_1/
folder_1/file_2.txt
folder_1/file_3.txt
folder_1/folder_2/
folder_1/folder_2/folder_3/
folder_1/folder_2/folder_3/file_4.txt
Sólo quiero:
file.txt
folder_1/file_2.txt
folder_1/file_3.txt
folder_1/folder_2/folder_3/file_4.txt