脚本的布尔参数
在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')
那布尔值(boolean)呢?
简单来说,我想在我的脚本里传一个标志,这个标志可以告诉脚本是否要执行某个特定的操作。
4 个回答
10
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-option
,设置action='store_false'
,另一个是--option
,设置action='store_true'
。
20
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们不太了解这些工具的工作原理时。
比如,有人可能在使用某个库时,发现它的某个功能没有按预期工作。这时候,通常我们会去查找相关的资料,看看有没有人遇到过类似的问题,或者有没有解决方案。
在这个过程中,提问和回答是非常重要的。提问时,我们需要把问题描述清楚,让别人能够理解我们遇到的困难。而回答问题的人,也需要尽量用简单易懂的语言来解释,帮助提问者解决问题。
总之,编程的学习过程就是一个不断提问和解决问题的过程,大家互相帮助,共同进步。
parser.add_argument('--foo', action='store_true')
159
你可以使用 action
配合 store_true
或 store_false
,也可以使用一个整数,让它自动转换成布尔值。
如果使用 action
,你就不需要传入 --foo=true
和 --foo=false
这样的参数,只需要在需要设置为真时直接包含这个参数就可以了。
python myProgram.py --foo
实际上,我觉得你可能想要的是
parser.add_argument('-b', action='store_true', default=False)