首页 > 解决方案 > 检查参数是否存在并相应地设置一个值

问题描述

我正在尝试用 Python 编写一个程序,该程序需要检查是否存在参数,然后相应地设置要在程序中使用的值。例如:

abc -a -b

两者都是可选的-a-b但是-a为程序提供了一些端口号(比如端口 1234)的默认值。但如果-b存在,则程序必须默认使用不同的端口号(例如 2215)。

我该怎么做argparse

标签: pythonargparse

解决方案


你可以这样做:

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')

在这种情况下,无论哪个第二个将覆盖另一个。


推荐阅读