我的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:ap1
和ap2
的用法和帮助。我怎样才能做到这一点?
尝试使用这种方式运行文件。它起作用:
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
,第二个是一些子命令(如push
、pull
或clone
(,并且这些子命令中的每一个都有自己的一组可能的参数,则可以使用子分析器来实现这一点。
首先为每个子命令创建一个子分析器,然后对每个子分析器执行相同类型的add_argument()
。我敢肯定,当你打印用法时,它会打印所有子命令的所有帮助。