поиск файлов в S3, когда указан путь - PullRequest
0 голосов
/ 23 декабря 2018

Учитывая путь к корзине S3, мне нужно найти другой файл по тому же пути и работать над ним.

  • Я использую Django в Python.
  • Iу меня есть модель с именем «HouseList» и модель с именем «CustomerFile»
  • Я использую функцию, которая возвращает список объектов HouseList, которые мне нужно изменить.

Для каждого объектатам у меня есть путь к файлу, и по этому пути я могу найти соответствующий файл клиента, как вы можете видеть на следующих распечатках с терминала:

In [7]: HouseList.objects.get(id=11508).file_path
Out[7]: u'85/1545927/omc_emea_hl_small.csv'

In [8]: CustomerFile.objects.get(id=5031).file_path
Out[8]: u'85/1545927/omc_emea_pos_small.csv'

Есть ли способ, учитывая префикспуть, чтобы получить список всех файлов, которые там находятся?

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

Функция list_objects_v2() может возвращать список объектов для данного префикса:

response = client.list_objects_v2(
    Bucket='string',
    Delimiter='string',
    EncodingType='url',
    MaxKeys=123,
    Prefix='string',
    ContinuationToken='string',
    FetchOwner=True|False,
    StartAfter='string',
    RequestPayer='requester'
)

Итак, вы должны использовать что-то вроде:

path = HouseList.objects.get(id=11508).file_path

response = client.list_objects_v2(
    Bucket=your_bucket,
    Prefix=path[:path.rfind('/')+1],
)
0 голосов
/ 23 декабря 2018

Вы можете использовать модуль s3 boto в Python, чтобы вывести список файлов с указанным префиксом как стоящий: http://boto.cloudhackers.com/en/latest/ref/s3.html#boto.s3.bucket.Bucket.list

префикс (строка) - позволяет ограничить листинг определеннымпрефикс.Например, если вы вызываете метод с префиксом = '/ foo /', то итератор будет циклически переключаться только по тем ключам, которые начинаются со строки '/foo/'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...