我有一个程序,我尝试使用argparse在我的代码中添加帮助:
import argparse,sys
parser = argparse.ArgumentParser(description='prog desc')
parser.add_argument('path', help='name of directory')
args = parser.parse_args()
parser.print_help()
这将打印:
>python testArgs.py
usage: testArgs.py [-h] path
testArgs.py: error: too few arguments
但我期望的结果与进入-h时一样:
>python testArgs.py -h
usage: testArgs.py [-h] path
prog desc
positional arguments:
path name of directory
optional arguments:
-h, --help show this help message and exit
但是如果我把print_help()的位置换到parse_args()之前,它就能正常工作:
import argparse,sys
parser = argparse.ArgumentParser(description='prog desc')
parser.add_argument('path', help='name of directory')
parser.print_help()
args = parser.parse_args()
输出:
>python testArgs.py
usage: testArgs.py [-h] path
prog desc
positional arguments:
path name of directory
optional arguments:
-h, --help show this help message and exit
usage: testArgs.py [-h] path
testArgs.py: error: too few arguments
我做错了什么?
发布于 2019-09-28 06:46:27
在您的第一个示例中,您的程序没有到达parser.print_help()
方法,它在parser.parse_args()
上失败,打印默认的错误消息(即testArgs.py: error: too few arguments
),然后退出程序。
在您的第二个示例中,当您在两个函数之间切换时,它的行为仍然相同,但您会看到帮助详细信息,因为您在程序失败之前调用了print_help()
函数(您可以看到它失败了,因为它仍然会在最后打印错误消息)。
如果您想在发生argparse错误时打印帮助消息,请阅读此帖子:Display help message with python argparse when script is called without any arguments
https://stackoverflow.com/questions/58141554
复制相似问题