使用argparse分别编写命令和标志



我在python中写了一段代码,它利用argparse模块使其更容易使用。

我可以添加标志形式的参数,如:

parser.add_argument('-u', '--url', dest='url', help='type in url')

但就像在gobuster中一样,当你使用帮助标志(-h(时,你可以看到你也可以传递命令,比如dir、fuzz等。他们每个人都有单独的帮助标志,比如

gobuster dir --help

如何做到这一点?我可以通过以下方式制作无参数的标志:

parser.add_argument('R', action='store_true', help='allow recursion')

简而言之,我正试图找出如何分别定义命令,以便它们也显示在帮助部分的命令下,而不是可选参数之下。我还试图了解如何为每个命令创建一个单独的帮助部分。

可以通过具有单独帮助消息和父参数的子分析器添加它。

arg_parser.add_argument('--version', action='version', version='%(prog)s 1.0')
subparsers = arg_parser.add_subparsers(title='subcommands',dest='subcommandsarg',help='Program parser for subcommands')
parser1 = argparse.ArgumentParser(add_help=False)
parser1.add_argument('-a','--arg1', dest='module',required=False,help='Mod Name' ,default='all')
subparsers.add_parser('parser1',parents=[parser1],help="Help text for parser1")
parser2 = argparse.ArgumentParser(add_help=False)
parser2.add_argument('-b','--arg2', dest='module',required=False,help='Mod Name' ,default='all')
subparsers.add_parser('parser2',parents=[parser2],help="Gets the configuration of mods")
options = arg_parser.parse_args()

输出

#python test.py -h
usage: program [-h] [--version] {parser1,parser2} ...
optional arguments:
-h, --help         show this help message and exit
--version          show program's version number and exit
subcommands:
{parser1,parser2}  Program parser for subcommands
parser1          Help text for parser1
parser2          Gets the configuration of mods
#python test.py parser1 -h
usage: program parser1 [-h] [-a MODULE]
optional arguments:
-h, --help            show this help message and exit
-a MODULE, --arg1 MODULE
Mod Name
#python test.py parser2 -h
usage: program parser2 [-h] [-b MODULE]
optional arguments:
-h, --help            show this help message and exit
-b MODULE, --arg2 MODULE
Mod Name

最新更新