使用inquirer列出S3存储桶实现单选上传的代码问题排查
S3存储桶选择功能修复方案
问题原因
- 你将选择弹窗的生成逻辑放在了存储桶遍历循环内,每遍历到1个存储桶就会触发1次弹窗,每次弹窗只有当前遍历到的1个存储桶选项
- 构造选项列表时错误加了一层大括号,将字符串类型的桶名包裹为集合类型,不符合
choices参数的传入要求
修复后代码
import boto3 import inquirer # 初始化S3客户端 s3 = boto3.client('s3') response = s3.list_buckets() # 先一次性收集所有存储桶名称,生成选项列表 bucket_choices = [bucket["Name"] for bucket in response['Buckets']] print('已存在的存储桶:') # 仅生成一次选择弹窗,传入全部存储桶选项 questions = [ inquirer.List('Buckets', message="请选择要上传文件的存储桶: \n", choices=bucket_choices, ), ] answers = inquirer.prompt(questions) # 获取用户选中的存储桶,后续可基于该变量执行上传逻辑 selected_bucket = answers['Buckets'] print(f"已选中存储桶:{selected_bucket}")
内容的提问来源于stack exchange,提问作者Sergey V.
相关产品推荐
相关产品推荐

