Python argparse使用选项,而不是参数

Python argparse使用选项,而不是参数,python,argparse,Python,Argparse,如果我向脚本传递一个布尔选项(如果提供了该选项,则基本上为true;如果没有,则为false),那么如何使用argparse与保存值的参数对其进行不同的处理 例如,我的脚本采用一个参数propFile,该参数包含一个值和一个选项clean,该选项只是一个真/假标志。用法是 myScript.py--propFile=path/to/my/prop.file-clean 注意,我试图在用户级别上区分参数和选项,方法是为前者指定两个破折号,为后者指定一个破折号,这对解释器来说应该无关紧要 如果提供了

如果我向脚本传递一个布尔选项(如果提供了该选项,则基本上为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:错误:参数-清除:应为一个参数


如何将可选布尔参数与argparse一起使用?

如果提供“-clean”或“-c”,则
clean
的值将为
True
,否则
False

parser.add_argument('-c', '--clean', action="store_true")

比我快。非常好。也被称为“阅读”。是的,我注意到了,但这看起来不太好。让我们提供更好的选择…@jatinderjit。这纯粹是一个品味问题,OP的推理是合理的。这是个人偏好的问题,正如@Madpysicast所指出的,其中的变化是合理的。至少可以说,试图在这种琐碎的约定上强制执行一个全球标准是迂腐的。请注意,对于短版本的标志(例如,
-c
表示
--clean
)使用单破折号是传统做法;虽然这对解释器来说并不重要,但可能不是您的CLI的消费者所期望的。我知道,但是,对于参数arg,我只是避免提供较短的版本,以区分我所读入的内容“我试图在用户级别上区分参数和选项,将两个破折号指定给前者,将一个破折号指定给后者,我只是说:不要。这种关于语义学的讨论是毫无意义的。你永远不会有一个单一的公约,就像世界永远不会只说一种语言一样。如果人们拒绝采纳已经存在的公约,坚持自己制定自己的公约,那当然不会是这样,但你是这样做的。