Загрузка файла из S3 с помощью python SDK

#boto3

Вопрос:

Я создал функцию для загрузки файлов из S3. Логика такова: я перечисляю корзины, выбираю корзину, затем файл списка, а затем выбираю файл для загрузки, однако я сталкиваюсь с ошибкой. Это ведро пусто или некоторые другие ошибки, когда я пытаюсь реализовать другой код. Вероятно, проблема очень проста, я просто не вижу ее. пожалуйста, помогите. Код с комментариями — это еще один код, который я пробовал. Выбор корзины и файла выполняется так, как это предполагается, и выводится с помощью печати правильного имени файла в интерфейсе консоли.

 def function_for_f(s3_handle=None):
    ##list buckets
    ## list files then
    ##download the file
    selected_bucket_name_origin = select_buckets(s3_handle=s3_handle)
    print(f"Selected bucket was: {selected_bucket_name_origin}")
    # Retrieve the bucket's objects
    objects = list_bucket_objects_aws(s3_handle=s3_handle, bucket_name=selected_bucket_name_origin)
    if objects is not None:
        obj_count=0
        # List the object names
        for obj in objects:
            print(f'{obj_count}. {obj["Key"]}')
            obj_count = obj_count   1
        
        if obj_count > 0:
            object_to_copy_index = input('Which object to copy?')
        print(f'Dowloading {objects[int(object_to_copy_index)]["Key"]}')
        # # Download the object
        # try:
        #     s3_handle.Bucket(selected_bucket_name_origin).download_file(objects[int(object_to_copy_index)]["Key"], 'my_local_image.jpg')
        # except botocore.exceptions.ClientError as e:
        #     if e.response['Error']['Code'] == "404":
        #         print("The object does not exist.")
        #     else:
        #         raise
    
        if s3_handle.download_file(selected_bucket_name_origin, objects[int(object_to_copy_index)]["Key"], '1.txt'):
                 logging.info(f'{obj["Key"]} was dowloaded from {selected_bucket_name_origin}')            

        else:
            print('Bucket is empty')
 

Комментарии:

1. Вы получаете сообщение об ошибке?

2. Я получаю код из заявления else. Ведро пустое, так что по какой-то причине мой блок if не срабатывает