S3 Python Список вложенных подкаталогов - PullRequest
0 голосов
/ 11 февраля 2019

Как мне вывести список подкаталогов в префиксе корзины S3, используя python boto3?

Например, если у меня есть корзина с именем test со следующей структурой:

test/abc/def/1/a.gz
test/abc/def/2/b.gz
test/abc/ghi/1/a.gz

Тогда я хочу вывод как:

test/abc/def/1
test/abc/def/2
test/abc/ghi/1

1 Ответ

0 голосов
/ 11 февраля 2019

Папки / подкаталоги на самом деле не существуют в S3.Вместо этого они составляют часть имени файла (Key) объекта.

Поэтому просто возьмите ключ до последней косой черты:

import boto3

s3 = boto3.client('s3', region_name = 'ap-southeast-2')

response = s3.list_objects_v2(Bucket='my-bucket')

# If the Key contains a slash, store the Key up to the last slash
folders = set(object['Key'][:object['Key'].rfind('/')+1] for object in response['Contents'] if '/' in object['Key'])

# Print the results
print('\n'.join(sorted(folders)))

См. Также: Определить, является ли папка или файл ключом - Boto

...