Boto3 S3: obtenha arquivos sem obter pastas
Usando o boto3, como recuperar todos os arquivos no meu depósito S3 sem recuperar as pastas?
Considere a seguinte estrutura de arquivos:
file_1.txt
folder_1/
file_2.txt
file_3.txt
folder_2/
folder_3/
file_4.txt
Neste exemplo, estou interessado apenas nos 4 arquivos.
EDITAR:
Uma solução manual é:
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
Nesse caso, o total seria 4.
Se eu fizesse
count = len(s3_client.list_objects(Bucket=bucket_name, Prefix=prefix))
o resultado seria 7 objetos (4 arquivos e 3 pastas):
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
Eu só quero:
file.txt
folder_1/file_2.txt
folder_1/file_3.txt
folder_1/folder_2/folder_3/file_4.txt