Как указать путь к подпапке boto.client.file_download? - PullRequest
0 голосов
/ 27 июня 2019

Я использую boto3 для загрузки файлов из корзины s3 в локальную систему.Проблема, с которой я сталкиваюсь, связана с подпапками.Я не могу передать путь к папке.

Файл загружается правильно, если файл находится в корзине, но для всех других файлов в подпапках я получаю следующую ошибку:

botocore.exceptions.ClientError: An error occurred (404) when calling the HeadObject operation: Not Found

Структура папки:

S3-bucket
   ||
    ==> Sub-Folder

Мой код:

    aws_f_name = 'text_file.txt'
    aws_f_dir = '/testdir'
    s3_client = boto3.client('s3', region_name='us-west-2')
    s3_client.download_file('womply-data-science','%s/%s' %(aws_f_name, aws_f_dir),'my_locat_file.txt')

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

Ответы [ 2 ]

0 голосов
/ 27 июня 2019

предоставленная вами ссылка является ссылкой на пример, а не на фактическую документацию. Ссылка на актуальную документацию функции download_file: здесь .

В вашем случае правильный вызов функции:

s3_client.download_file('womply-data-science', 'test_dir/text_file.txt', 'my_local_file.txt')
0 голосов
/ 27 июня 2019

В S3 нет понятия «папки». То, что вы видите, это просто визуальное представление папок. Вы просто должны убедиться, что ключ, который вы вводите, является правильным. Но ваша ошибка здесь, кажется, потому что вы пишете имя файла / имя_фолдера вместо имя_фолдера / имя_файла

Запись% s устарела, я бы порекомендовал вам использовать метод форматирования или просто синтаксис +, например:

s3_client.download_file('womply-data-science','{0}/{1}'.format(aws_f_dir, aws_f_name),'my_locat_file.txt')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...