脚本的布尔参数

84 投票
4 回答
58548 浏览
提问于 2025-04-17 12:32

在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_truestore_false,也可以使用一个整数,让它自动转换成布尔值。

如果使用 action,你就不需要传入 --foo=true--foo=false 这样的参数,只需要在需要设置为真时直接包含这个参数就可以了。

python myProgram.py --foo

实际上,我觉得你可能想要的是

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

撰写回答