Python 参数标志,未使用时为null,未使用参数时为默认值

Python 参数标志,未使用时为null,未使用参数时为默认值,python,command-line,argparse,Python,Command Line,Argparse,我使用argparse来解析参数。我希望有一个标志,当不使用时为NULL,当不使用参数时为foo,当与参数一起使用时为参数值 ap = argparse.ArgumentParser(description='test') ap.add_argument('--bar', action='store_true') args = ap.parse_args() 上面的代码是我目前拥有的 我希望python test.py拥有ap.bar=None,python test.py--bar拥有ap.

我使用argparse来解析参数。我希望有一个标志,当不使用时为
NULL
,当不使用参数时为
foo
,当与参数一起使用时为参数值

ap = argparse.ArgumentParser(description='test')
ap.add_argument('--bar', action='store_true')
args = ap.parse_args()
上面的代码是我目前拥有的


我希望
python test.py
拥有
ap.bar=None
python test.py--bar
拥有
ap.bar=foo
python test.py--bar-ctest
拥有
ap.bar=ctest
。我将如何修改以使其发生?

我假设您的意思是
,而不是

你可以做:

import argparse

ap = argparse.ArgumentParser(description='test')
ap.add_argument('--bar', nargs='?', const='foo')
args = ap.parse_args()

print(args.bar)
这使得:

$ python3 test.py
None

$ python3 test.py --bar
foo

$ python3 test.py --bar ctest
ctest

作为一种可能的助记符,
nargs='?'
语法(表示零或一)类似于正则表达式中的
用法。

我假设您的意思是
,而不是

你可以做:

import argparse

ap = argparse.ArgumentParser(description='test')
ap.add_argument('--bar', nargs='?', const='foo')
args = ap.parse_args()

print(args.bar)
这使得:

$ python3 test.py
None

$ python3 test.py --bar
foo

$ python3 test.py --bar ctest
ctest

作为一种可能的助记符,
nargs='?'
语法(表示零或一)类似于正则表达式中的
用法。

没有
NULL
这样的东西。你是说
None
?这是在
nargs='?'
下记录的,没有
NULL这类东西。你的意思是
None
?这在
nargs='?'
下有记录,如果我尝试使用它运行多个标志,那么它会将所有其他标志作为第一个标志的参数进行计数。有没有一个简单的方法来解决这个问题?@user760900请举例说明您想要使用什么命令行,以及如何解释它。我意识到它应该是@user760900,我可以看一看。如果我尝试用它运行多个标志,那么它会将所有其他标志作为第一个标志的参数。有没有一个简单的方法来解决这个问题?@user760900请你举一个例子,说明你想使用什么命令行,以及如何解释它。我意识到它应该是@user760900,我可以看一下。