参数标志,不使用时为空,不使用时为默认值
Posted
技术标签:
【中文标题】参数标志,不使用时为空,不使用时为默认值【英文标题】:Argument flag that is null when not used and default value when used without argument 【发布时间】:2020-10-26 00:25:45 【问题描述】:我正在使用 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
。我会修改什么来发生这种情况?
【问题讨论】:
没有NULL
这样的东西。你的意思是None
?
这记录在nargs='?'
, docs.python.org/3/library/argparse.html#nargs
【参考方案1】:
我假设您的意思是 None
而不是 NULL
。
你可以这样做:
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='?'
语法(表示零或一)类似于正则表达式中?
的用法。
【讨论】:
如果我尝试使用这个like this 运行多个标志,那么它会将所有其他标志计为第一个标志的参数。有没有简单的方法来解决这个问题? @user760900 请您举例说明您想使用什么命令行,以及您希望如何解释它。 我意识到应该是a separate question @user760900 很公平,我可以看看。以上是关于参数标志,不使用时为空,不使用时为默认值的主要内容,如果未能解决你的问题,请参考以下文章
EditText android:text 设置的默认值运行的时候为空并且不能滚动