Укажите дикий символ в префиксе фильтра S3 - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть файлы в S3 с указанной структурой папок, например: Год / Месяц / Дата / file.csv.

Я использую приведенный ниже код для извлечения данных за определенную дату.

import boto3
resource = boto3.resource('s3')
root_data = resource.Bucket('my_bucket')
for obj in root_data.objects.filter(Prefix='2018/09/19'):
    process(obj)

Я хочу знать, возможно ли получить данные, указав дикие символы в префиксе (или любым другим способом) ??

Например: получить список файлов за определенный день всего месяца, например Prefix='2018/*/19'.Я пробовал с '*' в приведенном выше коде, но не выбирает имена файлов.

Примечание: я не могу изменить структуру папок S3

1 Ответ

0 голосов
/ 24 сентября 2018

У вас есть две опции: Первая:

Параметры префикса и разделителя ограничивают вид результатов, возвращаемых операцией со списком.Префикс ограничивает результаты только теми ключами, которые начинаются с указанного префикса, а разделитель заставляет список сворачивать все ключи, которые имеют общий префикс, в один сводный список результатов.

Для получения дополнительной информации прочитайте следующую страницу: https://docs.aws.amazon.com/AmazonS3/latest/dev/ListingKeysHierarchy.html

Второе: получить все объекты и проверить их на Python

import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('bucket')
for obj in bucket.objects.all():
    if '.pdf' in obj.key:
        print(obj.key)
...