我试图用Python编写程序,该程序需要检查是否存在参数,然后相应地设置要在程序中使用的值。例如:
abc -a -b
-a
和-b
都是可选的。但是-a
为程序提供了一些端口号(例如端口1234)的默认值。但是,如果存在-b
,则程序必须默认使用其他端口号(例如2215)。
如何使用argparse
来做到这一点?
答案 0 :(得分:3)
您可以这样做:
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')
在这种情况下,以第二个为准。