Python argparse - 检测列表参数是否在之后没有任何内容地传递
Python argparse - Detect if list argument is passed without anything afterwards
假设用户输入:
./args.py --create --mem 5
我的解析器看起来像这样:
parser.add_argument('--create', nargs='*', default=None)
通常 --create
接受带有 nargs='*'
的列表,但在这种情况下,用户未传递任何内容。
我想要发生的是 --create
在调用时设置为默认值,而不是我得到 []
问题:有没有办法检测 --create
是否出现在命令行参数中而后面没有任何内容?
这是一个简单的代码片段:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--create', nargs='*', default=None)
options = parser.parse_args()
print(options)
以下是一些互动:
$ ./args.py
Namespace(create=None)
$ ./args.py --create
Namespace(create=[])
$ ./args.py --create one
Namespace(create=['one'])
$ ./args.py --create one two
Namespace(create=['one', 'two'])
可以看到,如果用户不加--create
标志,就是None
。如果用户没有使用 --create
标志,您将得到一个空列表。
假设用户输入:
./args.py --create --mem 5
我的解析器看起来像这样:
parser.add_argument('--create', nargs='*', default=None)
通常 --create
接受带有 nargs='*'
的列表,但在这种情况下,用户未传递任何内容。
我想要发生的是 --create
在调用时设置为默认值,而不是我得到 []
问题:有没有办法检测 --create
是否出现在命令行参数中而后面没有任何内容?
这是一个简单的代码片段:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--create', nargs='*', default=None)
options = parser.parse_args()
print(options)
以下是一些互动:
$ ./args.py
Namespace(create=None)
$ ./args.py --create
Namespace(create=[])
$ ./args.py --create one
Namespace(create=['one'])
$ ./args.py --create one two
Namespace(create=['one', 'two'])
可以看到,如果用户不加--create
标志,就是None
。如果用户没有使用 --create
标志,您将得到一个空列表。