Я знаю, что есть много похожих вопросов (особенно this ), заданных на SO, но ни один из ответов на самом деле не решает мою ситуацию. И, конечно же, я знаю, что в S3 нет такой вещи, как папка. Внутри все хранится как ключ.
У меня следующая структура каталогов:
TWEAKS/date=2020-03-19/hour=20/file.gzip
TWEAKS/date=2020-03-20/hour=21/file.gzip
TWEAKS/date=2020-03-21/hour=22/file.gzip
TWEAKS/date=2020-03-22/hour=23/file.gzip
Я пробовал это;
def list_folders(s3_client, bucket_name):
response = s3_client.list_objects_v2(Bucket=bucket_name, Prefix='TWEAKS/', Delimiter='/')
for content in response.get('CommonPrefixes', []):
yield content.get('Prefix')
s3_client = session.client('s3')
folder_list = list_folders(s3_client, bucket_name)
for folder in folder_list:
print('Folder found: %s' % folder)
Но это только список всех каталогов до первого уровня
Folder found: TWEAKS/date=2020-03-19/
Folder found: TWEAKS/date=2020-03-20/
Folder found: TWEAKS/date=2020-03-21/
Folder found: TWEAKS/date=2020-03-22/
Теперь я не могу добавить подкаталог в префикс, потому что имена не совпадают hour=21
, hour=22
... Есть ли способ добиться этого вывода?
Folder found: TWEAKS/date=2020-03-19/hour=20/
Folder found: TWEAKS/date=2020-03-20/hour=21/
Folder found: TWEAKS/date=2020-03-21/hour=22/
Folder found: TWEAKS/date=2020-03-22/hour=23/