Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 脚本的布尔参数_Python - Fatal编程技术网

Python 脚本的布尔参数

Python 脚本的布尔参数,python,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') 这对布尔人来说

在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')
这对布尔人来说是什么


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

您可以将
操作
store\u true
store\u false
一起使用,也可以使用int并让隐式强制转换检查布尔值

parser.add_argument('--foo', action='store_true')
使用
操作
,您不会传递
--foo=true
--foo=false
参数,如果要将其设置为true,您只需将其包括在内

python myProgram.py --foo
事实上,我认为你可能想要的是

parser.add_argument('-b', action='store_true', default=False)
调用它的示例:

$ ./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

我应该提到,如果希望支持“yes”和“no”等值,也可以将参数绑定到本地包装函数,以处理其他精确的字符串匹配。您还可以尝试将输入解释为yaml,它也可以处理yes/no。虽然我已经有一段时间没有这样做了,但我想最近我已经习惯了使用相同的
dest
值的互斥参数,一个
——使用
action='store\u false'
,没有选项,还有一个
--选项
带有
action='store\u true'

action='store\u true'
有什么问题吗?你想要布尔型的行为是什么?(例如,使用“-v true”和“-v false”?)我不认为有必要使用
default=false
。@PaulDraper:Explicit比implicit好。@PaulDraper我已经检查过它不是必需的,但您可以将其作为显式值。@PaulDraper不是布尔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