如果-h参数传递,为什么我的脚本在parse_args()处停止?

时间:2015-11-15 16:06:08

标签: python argparse

我尝试运行以下脚本来了解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()会在脚本结束前导致退出吗?

2 个答案:

答案 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__处理此操作。