为了账号安全,请及时绑定邮箱和手机立即绑定

将 argparse 上的空字符串替换为 None

将 argparse 上的空字符串替换为 None

当年话下 2021-11-30 15:52:44
我正在使用 groovy 来调用 python 类,我默认为 None 空参数,但我发现很多问题也默认为 None null 或空字符串 ('')。我希望有一些东西argparse可以检查参数是否为 '' 并将其更改为 None 在这种情况下,因此在代码中我不必再检查None'' 只需检查 if is not None。
查看完整描述

2 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

的类型参数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', ''])

输出:


Namespace(foo=None)


查看完整回答
反对 回复 2021-11-30
?
三国纷争

TA贡献1804条经验 获得超7个赞

将命令行参数指定为 typestr为 default None,例如:

parser.add_argument('-j', '--jfile', default=None, type=str)

然后,如果用户-j完全省略,那么您将None返回。但是如果用户-j在命令行后面什么都不输入,他们将得到错误参数 -j/--jfile: expected one argument并且他们将不得不提供一个字符串值来解决这个问题。所以你应该总是得到一个None或一个非空的字符串。


查看完整回答
反对 回复 2021-11-30
  • 2 回答
  • 0 关注
  • 184 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信