#python #amazon-web-services #amazon-s3 #boto3
Вопрос:
У меня есть набор данных в корзине s3, который находится в формате:
s3://bucket-name/<hash_0>/image.jpg
s3://bucket-name/<hash_0>/data.json
s3://bucket-name/<hash_1>/image.jpg
s3://bucket-name/<hash_1>/data.json
В котором каждый <hash_i> представляет «точку данных», содержащую изображение и файл json.
Я пытаюсь выполнить итерацию по корзине, но мне нужно выполнить итерацию только по каталогам, так как имена файлов json и изображений известны заранее.
То, что я сейчас делаю, это:
s3 = boto3.client('s3', region_name='us-east-1')
paginator = s3.get_paginator('list_objects_v2')
pages = paginator.paginate(Bucket="dataset")
for page in pages:
for obj in page['Contents']:
logging.info(f"{obj=}")
Все, что мне было нужно, — это ведро.команда ls или параметр max_depth в функции разбиения на страницы. Как я мог бы сделать это с помощью библиотеки boto3?
Ответ №1:
Попробуйте это:
s3 = boto3.client('s3', region_name='us-east-1')
paginator = s3.get_paginator('list_objects_v2')
pages = paginator.paginate(Bucket="dataset", Delimiter='/', Prefix='')
for page in pages:
for obj in page['CommonPrefixes']:
print(obj['Prefix'])