python-3.x - 使用用户输入循环下面的代码
问题描述
想要一段代码,我在其中询问队列名称,然后使用提供的名称创建新的 sqs 队列。如果队列名称已经存在,则希望提示循环以获取新名称
import boto3
sqs = boto3.resource('sqs')
all_queues = sqs.queues.all()
while True:
sqs_queue_name = input("Enter queue name: ")
for queue in all_queues:
if queue.attributes['QueueArn'].split(":")[-1] == sqs_queue_name:
print(f"Queue {sqs_queue_name} already exists")
continue
else:
queue = sqs.create_queue(QueueName=sqs_queue_name, Attributes={'DelaySeconds':'5'})
print(queue.url)
print(queue.attributes.get('DelaySeconds'))
我做错了什么?代码一直问我队列名称,所以while循环有问题,看不出它有什么问题......
解决方案
假设调用 all_queues = sqs.queues.all() 返回一个列表,
我会在创建一个新队列时打破 while True: 循环。
我也会消除那个内部 for 循环。相反,我会列出队列名称,然后检查我选择的队列名称是否在该列表中。如果是,我需要不断向用户询问新的队列名称。如果没有,请创建新队列并跳出循环。
像这样的东西:
import boto3
sqs = boto3.resource('sqs')
all_queues = sqs.queues.all()
queue_names = [x.attributes['QueueArn'].split(":")[-1] for x in all_queues]
while True:
sqs_queue_name = input("Enter queue name: ")
if sqs_queue_name in queue_names:
print(f"Queue {sqs_queue_name} already exists")
continue
else:
queue = sqs.create_queue(QueueName=sqs_queue_name, Attributes= {'DelaySeconds':'5'})
print(queue.url)
print(queue.attributes.get('DelaySeconds'))
break
推荐阅读
- python - 错误 HTTPSConnectionPool: url 超出最大重试次数: (由 SSLError(SSLEOFError(8, 'EOF 发生违反协议 (_ssl.c:1123)')))
- reactjs - 从 instagram 获取标记的照片。只收到我的帖子。我正在分享我用 html 编写的演示代码
- r - 基于参数的位置评级
- python - 无法将符号 Keras 输入/输出转换为 numpy 数组
- node.js - 如何撤消“lerna 链接转换”?
- ios - 如何在 SwiftUI 的按钮中添加导航按钮链接?
- node.js - 使用护照进行身份验证后,如何在 React FROM express 中重定向到用户仪表板
- node.js - 此 Git 命令(git commit -m 'initial')无法执行
- vb.net - 服务器PC访问C盘文件夹的情况(通过局域网)
- php - 如何在简单的 HTML DOM 解析器中传递商店选择