我尝试运行以下脚本来了解command.parse_args()
返回的命名空间内的内容。
#!/usr/bin/python3
import argparse
command = argparse.ArgumentParser()
command.add_argument("test")
print("test1")
args = command.parse_args()
print("test2")
print(args)
如果我运行"完成"命令(如./test.py 1
)一切正常,并显示命名空间。
但如果我执行类似./test.py -h
的操作,则会失败并停在args =
command.parse_args()
,print("Test2")
不会被调用。
我没有错误。但是剧本的其余部分没有被解释。
为什么?
这种方式会出现某种错误吗?
./test.py -h
因某种原因无效(即使它似乎工作正常)?
args = command.parse_args()
会在脚本结束前导致退出吗?
答案 0 :(得分:2)
默认情况下,help options are added到参数解析器。然后,当传递帮助参数时,将调用帮助操作,该操作将打印帮助,然后结束程序执行。
如果您不希望这种情况发生,您需要将add_help
参数设置为False
,但这也会阻止参数解析器提供帮助功能。
如果您实际查看打印的帮助文本,退出行为非常明显:
-h, --help show this help message and exit
答案 1 :(得分:1)
看一下argparse.py源代码。
https://github.com/python/cpython/blob/master/Lib/argparse.py#L1007
argparse有默认帮助-h
,这是一个显示帮助和退出的操作。
_HelpAction.__call__
处理此操作。