python - 检查参数是否存在并相应地设置一个值
问题描述
我正在尝试用 Python 编写一个程序,该程序需要检查是否存在参数,然后相应地设置要在程序中使用的值。例如:
abc -a -b
两者都是可选的-a
。-b
但是-a
为程序提供了一些端口号(比如端口 1234)的默认值。但如果-b
存在,则程序必须默认使用不同的端口号(例如 2215)。
我该怎么做argparse
?
解决方案
你可以这样做:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-a',
action='store_const',
const=1234,
dest='port')
parser.add_argument('-b',
action='store_true',
dest='port_override')
args = parser.parse_args()
if args.port_override:
args.port = 2215
print(args.port)
这告诉argparse
如果-a
指定,则该值1234
将存储在args.port
. 此外,如果-b
指定,args.port_override
则将是True
. 执行参数解析后,我们可以检查 的值args.port_override
。
你也可以这样做:
parser.add_argument('-b',
action='store_const',
const=2215
dest='port')
在这种情况下,无论哪个第二个将覆盖另一个。
推荐阅读
- python - 如何避免 python 循环中的特定交互?我想跳过提到的代码 3 7 和 9 但它只删除了 3
- oracle - 语句未在 pl/sql 中打印
- go - 互斥锁如何与单例一起使用?
- http - Flutter/Dart http 客户端 - 内容类型标头发送两次
- javascript - 类型 '"account_onboarding"' 不可分配给 typescript nodejs 上的条带 api 中的类型 'Type'.ts
- adaptive-cards - 如何在自适应卡上使用“仅显示时间”
- python - 如何在 Digitalocean 中上传 Django 项目?
- java - 来自 Java 的 PostgreSQL 查询中的可选日期参数不起作用
- html - flex-stretched文本元素(H2)的文本内容的对齐方式
- r - 在这种情况下,错误消息“列名不得重复”是什么意思