【发布时间】:2016-10-22 00:05:39
【问题描述】:
如果我将一个布尔选项传递给我的脚本,如果提供了该选项,则基本上为 true,否则为 false,我如何使用 argparse 处理它而不是保存值的参数。
例如,我的脚本有一个参数propFile,它包含一个值和一个选项clean,它只是一个真/假标志。用法是
myScript.py --propFile=path/to/my/prop.file -clean
请注意,我尝试通过为前者分配两个破折号和为后者分配一个破折号来区分用户级别的参数和选项,这对解释器来说应该无关紧要。
如果提供了-clean,我想分配scrptVarClean=True,如果没有提供False。
我尝试的是:
argparser = argparse.ArgumentParser()
argparser.add_argument('--propFile', help='Properties file path')
argparser.add_argument('-clean', help='Clean?')
args = argparser.parse_args();
propFile = args.props
clean = args.clean
但我得到了
pgCloner.py:错误:参数 -clean:需要一个参数
如何在 argparse 中使用可选的布尔参数?
【问题讨论】:
-
请注意,通常使用单破折号来表示短版本的标志(例如,
-c表示--clean);尽管对解释器来说并不重要,但它可能不是 CLI 的使用者所期望的。 -
我知道,但是对于参数 arg,我只是避免提供较短的版本,以区分
-
这就是我读到的“我尝试通过为前者分配两个破折号和为后者分配一个破折号来区分用户级别的参数和选项”,我只是说:不要。
-
这种关于语义的讨论毫无意义。你永远不会有一个单一的约定,就像世界永远不会只说一种语言
-
如果人们拒绝采用已经存在的并坚持自己编造,当然不会有,但你做到了。