Argparse不会解析我在命令行中传递的任何参数

-1 python command-line-interface argparse python-3.x

我正在尝试在终端中运行我的程序:

py program.py -t
Run Code Online (Sandbox Code Playgroud)

并且它没有将布尔值设置为False.从我所看到的,我的所有代码看起来都是正确的.

isTitle = True

a = argparse.ArgumentParser(prog='program.py', usage='%(prog) [options]', description='The fooiest of bar')
a.add_argument('-t', '--title', action='store_const', const=False, dest='isTitle', help='show title')
r = a.parse_args()
Run Code Online (Sandbox Code Playgroud)

我在parse_args之后有一个语句,它打印了isTitle boolean来验证它已被设置,并且它总是返回True.你们有什么建议吗?如果需要,我可以添加更多代码/诊断语句.谢谢!

dec*_*eze 5

dest='isTitle'并不意味着一个变量命名isTitle将被改变,这意味着该值将被存储在r.isTitle,即在对象的parse_args调用返回.argparse修改全局范围内的任何变量都是疯狂的.

你想要的只是:

a.add_argument('-t', '--title', action='store_true', dest='isTitle', help='show title')
r = a.parse_args()
print(r.isTitle)
Run Code Online (Sandbox Code Playgroud)