我正在使用 groovy 来调用 python 类,我默认为 None 空参数,但我发现很多问题也默认为 None null 或空字符串 ('')。
我希望有一些东西argparse可以检查参数是否为 '' 并将其更改为 None 在这种情况下,因此在代码中我不必再检查None'' 只需检查 if is not None。
小智 9
的类型参数ArgumentParser.add_argument()是一个“允许执行任何必要的类型检查和类型转换”的函数。你可以滥用这个:
import argparse
def nullable_string(val):
if not val:
return None
return val
parser = argparse.ArgumentParser()
parser.add_argument('--foo', type=nullable_string)
print(parser.parse_args(['--foo', ''])
Run Code Online (Sandbox Code Playgroud)
输出:
Namespace(foo=None)
Run Code Online (Sandbox Code Playgroud)
将命令行参数指定为具有strdefault类型None,例如:
parser.add_argument('-j', '--jfile', default=None, type=str)
Run Code Online (Sandbox Code Playgroud)
然后,如果用户-j完全省略,那么您将返回None。但是,如果用户输入-j命令行后没有任何内容,他们将收到错误参数 -j/--jfile: Expected one argument,并且他们必须提供一个字符串值才能通过此参数。所以你应该总是得到一个None或一个非空字符串。