Перечислите сегменты S3 и выведите их с помощью запроса

#python #amazon-web-services #amazon-s3 #boto3

Вопрос:

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

вывод этого кода всегда «Какие корзины вы хотите выбрать» и 1 имя корзины в момент, когда я нажимаю enter, затем в нем отображается «какая корзина..» и новая корзина. Мне нужен список и способ выбрать один из них для запуска, поместите объект в это ведро.

Мой Код:

 s3 = boto3.client('s3')  response = s3.list_buckets()  # Output the bucket names  print('Existing buckets:')  for bucket in response['Buckets']:  # print(f' {bucket["Name"]}')  questions = [  inquirer.List('Buckets',  message="Which bucket you would like to upload file? n",  choices=[{bucket["Name"]}],  ),  ]  answers = inquirer.prompt(questions)   

Ответ №1:

Внимательно изучите свой код. Вы отображаете приглашение каждую отдельную итерацию, по одному разу для каждого блока.

Вместо этого вы должны предварительно создать список доступных сегментов и только затем отобразить приглашение:

 s3 = boto3.client('s3') response = s3.list_buckets() list_of_buckets = [bucket["Name"] for bucket in response['Buckets']] questions = [  inquirer.List('Buckets',  message="Which bucket you would like to upload file? n",  choices=list_of_buckets) ] answers = inquirer.prompt(questions)