如何打印所有argparser对象的用法和帮助



我的python脚本中有多个ArgumentParser()。然而,当我使用-h运行它时,只为其参数被解析的第一个argparser打印帮助。

代码:

%%writefile ./test_argparse.py
import argparse
ap1 = argparse.ArgumentParser()
ap1.add_argument("-a", "--abcd", help="help a")
var1 = ap1.parse_known_args()
ap2 = argparse.ArgumentParser()
ap2.add_argument("-e", "--efgh", help="help e")
var2 = ap2.parse_known_args()

在shell运行中:

python test_argparse.py --help

输出:

usage: test_argparse.py [-h] [-a ABCD]
optional arguments:
-h, --help            show this help message and exit
-a ABCD, --abcd ABCD  help a

正如您所看到的,用法和帮助都只显示在ap1

我希望能够显示两个argparser:ap1ap2的用法和帮助。我怎样才能做到这一点?

尝试使用这种方式运行文件。它起作用:

parser = argparse.ArgumentParser()
parser.add_argument('target_1', metavar='TARGET', help='Test1')
parser.add_argument('target_2', metavar='TARGET2', help='Test2')
args = parser.parse_args()

Argparse有这个概念"子分析器";这可能会满足你的要求?如果您考虑git或类似的命令,其中第一个是命令git,第二个是一些子命令(如pushpullclone(,并且这些子命令中的每一个都有自己的一组可能的参数,则可以使用子分析器来实现这一点。

首先为每个子命令创建一个子分析器,然后对每个子分析器执行相同类型的add_argument()。我敢肯定,当你打印用法时,它会打印所有子命令的所有帮助。

最新更新