Python 参数标志,未使用时为null,未使用参数时为默认值
我使用argparse来解析参数。我希望有一个标志,当不使用时为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.
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,我可以看一下。