Как остановить рекурсивную разбивку на страницы в S3 Paginator - PullRequest
0 голосов
/ 05 августа 2020

У меня такая структура каталогов S3

bucket 
|___ base_path
        |__ data1.csv
        |__ data2.csv
        |__ processed/
               |_ data1.csv
               |_ data2.csv

При чтении данных с помощью boto3 и paginator, как в приведенном ниже коде, я не хочу, чтобы файлы в папке processed были извлечены, но aws Paginator по умолчанию возвращает все файлы под base_path

def load_irt_files():
    paginator = s3.get_paginator("list_objects")
    page_iterator = paginator.paginate(Bucket=S3_BUCKET, Prefix=f"base_path/data/")
    file_name_list = []
    for page in page_iterator:
        file_name_list.extend([obj["Key"] for obj in page["Contents"]])

Ожидаемый результат

["base_path/data1.csv", 
"base_path/data2.csv"]

Текущий выход

["base_path/data1.csv", 
"base_path/data2.csv",
"base_path/processed/data1.csv"
"base_path/processed/data2.csv"]

1 Ответ

0 голосов
/ 06 августа 2020

Если вы укажете Delimiter='/', то результаты будут ограничены только указанной папкой.

Это также приведет к возвращению списка CommonPrefixes, в котором перечислены доступные подпапки.

...