脚本的布尔参数

时间:2012-02-07 21:08:19

标签: python

在Python中,我理解如何将int和str参数添加到脚本中。

parser=argparse.ArgumentParser(description="""Mydescription""")
parser.add_argument('-l', type=str, default='info', help='String argument')
parser.add_argument('-dt', type=int, default ='', help='int argument')

什么是布尔人?

基本上我想在我的脚本中传递一个标志,告诉脚本是否要执行特定操作。

3 个答案:

答案 0 :(得分:146)

您可以将actionstore_true | store_false一起使用,也可以使用int并让隐式转换检查布尔值。

使用action,您不会传递--foo=true--foo=false参数,如果要将其设置为true,则只需包含它。

python myProgram.py --foo

事实上,我认为你可能想要的是

parser.add_argument('-b', action='store_true', default=False)

答案 1 :(得分:17)

parser.add_argument('--foo', action='store_true')

答案 2 :(得分:4)

import distutils.util
ARGP.add_argument('--on', '-o', type=distutils.util.strtobool, default='true')

调用它的示例:

$ ./myscript                # argp.on = 1
$ ./myscript --on=false     # argp.on = 0
$ ./myscript --on=False     # argp.on = 0
$ ./myscript --on=0         # argp.on = 0
$ ./myscript --on=1         # argp.on = 1
$ ./myscript -o0            # argp.on = 0
$ ./myscript -o false       # argp.on == 0

我应该提一下,你也可以将参数绑定到本地包装函数,如果你想支持“是”和“否”等值,可以处理其他一些精确的字符串匹配。您也可以尝试将输入解释为yaml,它也可以处理是/否。我有一段时间没有这样做,我认为最近我用相同的dest值,一个--no-optionaction='store_false'以及一个{{ 1}} --option