Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查参数是否存在,并相应地设置一个值_Python_Argparse - Fatal编程技术网

Python 检查参数是否存在,并相应地设置一个值

Python 检查参数是否存在,并相应地设置一个值,python,argparse,Python,Argparse,我试图用Python编写一个程序,该程序需要检查参数是否存在,然后相应地设置要在程序中使用的值。例如: abc-a-b -a和-b都是可选的。但是-a为程序提供某个端口号(比如端口1234)的默认值。但是如果存在-b,则程序必须默认为不同的端口号(比如2215) 如何使用argparse?您可以这样做: import argparse parser = argparse.ArgumentParser() parser.add_argument('-a',

我试图用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\u override
将为
True
。执行参数解析后,我们可以检查
args.port\u override
的值

你也可以这样做:

parser.add_argument('-b',
                    action='store_const',
                    const=2215
                    dest='port')
在这种情况下,以第二个为准将优先于另一个