首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在argparse的帮助消息中包含所有子命令的帮助消息?

在argparse中,可以通过使用add_subparsers()方法来添加子命令,并且可以为每个子命令设置帮助消息。要在argparse的帮助消息中包含所有子命令的帮助消息,可以使用argparse.ArgumentDefaultsHelpFormatter类来自定义帮助消息的格式。

下面是一个示例代码,演示如何在argparse的帮助消息中包含所有子命令的帮助消息:

代码语言:txt
复制
import argparse

# 创建解析器
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)

# 创建子命令解析器
subparsers = parser.add_subparsers(title='subcommands', dest='subcommand', metavar='<subcommand>')

# 子命令1
subparser1 = subparsers.add_parser('command1', help='This is command 1 help')
subparser1.add_argument('arg1', help='Argument 1')

# 子命令2
subparser2 = subparsers.add_parser('command2', help='This is command 2 help')
subparser2.add_argument('arg2', help='Argument 2')

# 获取所有子命令的帮助消息
subcommands_help = ''
for name, subparser in subparsers.choices.items():
    subcommands_help += f'\n{name}: {subparser.description}'

# 设置帮助消息
parser._positionals.title = 'Positional arguments'
parser._optionals.title = 'Optional arguments'
parser._subparsers.title = 'Subcommands'
parser._subparsers.help = subcommands_help

# 解析命令行参数
args = parser.parse_args()

# 打印帮助消息
parser.print_help()

运行以上代码,可以得到如下输出:

代码语言:txt
复制
usage: program.py [-h] <subcommand> ...

positional arguments:
  <subcommand>
    command1   This is command 1 help
    command2   This is command 2 help

optional arguments:
  -h, --help  show this help message and exit

在这个例子中,我们使用argparse.ArgumentParser创建了一个解析器,并使用add_subparsers()方法创建了子命令解析器。然后,我们为每个子命令添加了帮助消息。接下来,我们通过遍历子命令解析器的choices属性,获取所有子命令的帮助消息,并将其添加到主解析器的帮助消息中。最后,我们使用parser.print_help()打印帮助消息。

这样,argparse的帮助消息中就包含了所有子命令的帮助消息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

argparse------用于命令行选项、参数和子命令的解析器

以确定如何在帮助消息中显示程序的名称。这个缺省值几乎总是可取的,因为它将使帮助消息与在命令行上调用程序的方式匹配。...description - 帮助输出中的子解析器组的描述,默认情况下为None。 prog - 使用子命令帮助将显示的使用信息,默认情况下程序的名称和子解析器参数之前的任何位置参数。...help - 帮助输出中的子解析器组的帮助,默认为None。 metavar - 在帮助中显示可用子命令的字符串;默认情况下,它是None,并以{cmd1, cmd2, ..}的形式显示子命令。...当其中之一出现时,子解析器的命令将出现在帮助输出中的它们自己的组中。...这些解析器不支持所有argparse特性,如果使用不支持的特性,就会引发异常。特别是子解析器argparse。不支持同时包含选项和位置的剩余组和互斥组。

7K20
  • Python 的 argparse 模块的作用,以及分享一个通用代码模板

    argparse 模块还会自动生成帮助和使用信息。如果用户传入无效的参数,argparse 会显示错误消息,帮助用户正确使用程序。...help:参数的帮助信息。当用户请求帮助时,这个描述会显示在命令行用法字符串和各种参数的帮助消息之间。编写清晰、简洁的帮助信息对用户非常重要。 default:如果用户未提供某个参数,将使用默认值。...添加所有参数后,会调用 parser.parse_args() 来解析运行脚本时提供的命令行参数,并将提取的数据放入 argparse.Namespace 对象中。...使用了内置函数 vars() 来处理前一步得到的 argparse.Namespace 对象 args。vars() 函数返回对象的 __dict__ 属性,这是一个包含了对象所有属性及其值的字典。...它允许您定义各种选项、参数和子命令,从而使您的程序更具灵活性。您可以根据需要添加或修改选项,而无需更改源代码。 自动生成帮助和用法信息:argparse 能够自动生成帮助和用法消息文本。

    21400

    parser.add_argument()用法——命令行选项、参数和子命令解析器

    argparse是一个Python模块:命令行选项、参数和子命令解析器。...通过在程序中定义好我们需要的参数,然后 argparse 将会从 sys.argv 解析出这些参数。argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。...(description='test') ArgumentParser 对象包含将命令行解析成 Python 数据类型所需的全部信息。...在帮助消息中,这个描述会显示在命令行用法字符串和各种参数的帮助消息之间。...help - 参数的帮助信息,当指定为 argparse.SUPPRESS 时表示不显示该参数的帮助信息. metavar - 在 usage 说明中的参数名称,对于必选参数默认就是参数名称,对于可选参数默认是全大写的参数名称

    2.6K20

    在Python中创建命令行界面的最佳方式

    前言: 我们先给大家介绍什么是命令行界面(CLI): 命令行界面或命令语言解释器,也称为命令行用户界面、控制台用户界面和字符用户界面,是一种与计算机程序交互的方式,用户以连续的文本行形式向程序发出命令。...根据程序的不同,这些参数可用于添加其他特性,如查看帮助文档、指定输出文件或启用测试特性,这些特性在正常使用时可能会出现问题。...当用户运行这个程序时,它们被限制为一组定义的规则。例如,如果我想将输出记录到文本文件中,该怎么办?作为一个用户,您可以创建一个命令行界面来提供这些问题的解决方案。 ?...处理错误情况:让用户确切地知道哪里出了问题 运行时状态:如果任务没有立即完成,您应该打印出当前的进度 使用argparse读取参数: Argparse是一个用于解析命令行参数的Python标准库模块。...作为程序员,您可以定义要接受的参数,而argparse将知道如何从sys中解析这些参数。当用户给程序提供无效参数时,Argparse还会自动生成帮助和使用消息,并输出错误。

    2.6K20

    【Python爬虫实操】 如何在任务中高效处理命令参数

    本文将介绍如何在Python中高效处理命令行参数,帮助更好地利用Python进行开发。  1.了解命令行参数的基本概念  命令行参数是在运行程序时由用户在命令行中输入的参数。...使用argparse库可以轻松定义命令行参数的类型、默认值、帮助信息等,并自动生成带有参数选项的帮助文档。...比如可以设置参数的互斥关系、分组关系、多个参数共享一个值等等。此外,argparse库还支持子命令,允许在一个主程序中定义多个命令并分别处理它们的参数。  ...4.使用合适的帮助信息  对命令行程序来说,良好的帮助信息是非常重要的。argparse库能够帮助我们自动生成带有参数选项的帮助文档,但仍需我们提供合适的帮助信息。...本文介绍了如何在Python中高效处理命令行参数。通过使用argparse库,我们能够轻松定义和解析命令行参数,并提供合适的帮助信息。

    21560

    python-argparse

    的简单使用,详细方法及示例请参考python标准库 python获取命令行参数 获取参数 sys.argv sys.argv[0] 为程序名称,其后分别为参数,len(sys.argv)可得出所有参数个数...python标准库中getopt, optparse, argparse都是专门处理命令行参数的模块 getopt 是类似UNIX系统getopt这个C函数的实现,可以处理长短配置项和参数。...的声明式风格的优点,又多了更丰富的功能,所以是现阶段最好用的参数处理标准库 docopt 是比前者更先进更易用的命令行参数处理器,甚至不用写代码,只要编写类似argparse 输出的帮助信息即可,因为其还不是标准库...,所以现在主要学习argparse argparse argparse 解析命令行选项,参数以及子命令 argparse 可以帮助更方便的写出用户友好的命令行接口。...() 解析后返回的名字,如不指定名字,则使用– 或者- 之后的名字 parse_args() 默认参数来自sys.argv 返回一个包含解析后的参数的namespace 其他功能 子命令 即命令之下包含又一层命令

    80410

    使用命令行界面运行Python脚本

    我们还将稍微调整代码,定义三个变量,而不是硬编码程序中的所有值:PDF源文件、要提取的页面,以及最终生成的PDF,此设置将允许我们在任何PDF文件上使用该程序。...我们可以定义程序需要的参数,argparse将找出如何从sys.argv解析这些参数。该库还自动生成帮助和用法消息。 首先,我们实例化ArgumentParser()对象。...从技术上讲,我们不需要这个if块,只需调用main(),代码仍然可以工作,但将其包含在代码中是一种很好的做法。 使用命令行界面运行Python脚本 实际测试一下这个程序。...应该会看到与下面类似的输出,并且在程序运行后,在同一文件夹中应该会有一个名为“3_pages.PDF”的PDF文件。 图3 argparse的优点之一是它自动生成帮助消息。...在命令行中,键入pdf_cli_eg.py -h。这将显示帮助消息,包括如何使用程序的CLI以及参数说明。 图4

    2.9K30

    Python 基础(二十一):argparse 模块

    简介 argparse 模块主要用于处理 Python 命令行参数和选项,程序定义好所需参数后,该模块会通过 sys.argv 解析出那些参数;除此之外,argparse 模块还会自动生成帮助和使用手册...使用 argparse 模块,我们可以轻松的编写出用户友好的命令行接口。 2....看一下方法中每一个参数的含义: prog:程序的名称(默认:sys.argv[0]) usage:描述程序用途的字符串(默认值:从添加到解析器的参数生成) description:在参数帮助文档之前显示的文本...(默认值:无) epilog:在参数帮助文档之后显示的文本(默认值:无) parents:一个 ArgumentParser 对象的列表,它们的参数也应包含在内 formatter_class:用于自定义帮助文档输出格式的类...help:一个选项作用的简单描述 metavar:在使用方法消息中使用的参数值示例 dest:被添加到 parse_args() 所返回对象上的属性名 下面我们通过具体示例看一下: import argparse

    60820

    Python中的命令行参数

    python可以使用 sys 模块中的 sys.argv 命令来获取命令行参数,其中返回的参数是一个列表在实际开发中,我们一般都使用命令行来执行 python 脚本使用终端执行python文件的命令:python...无法做到像liunx命令行一样,可以给使用者提供help帮助。1.2 argparse模块概念: argparse模块可以轻松的编写用户友好的命行界面。...该程序定义了他需要的参数,argparse并将找出如何解析这些参数 sys.argv。该argparse模块还会自动生成帮助和用法消息,并在用户给出的程序无效参数时发生异常。...,如:是否区分大小写,多行匹配等等。...方法获取匹配成功的字符串res1 = re.match('L', saying)# res1等于None,match只能匹配以 xxx 开头的子字符串,因为saying是以小写字母l开头的# 所以匹配失败

    1.6K20

    使用click创建完美的Python命令行程序

    Click库是一个非常高效的命令行工具,能够帮助我们快速创建完美的命令行接口,小编认为这是每个Python程序员都应该掌握的工具。 作为Python开发人员,我们经常编写命令行程序。...为了实现这一目标,我总结了四条原则,希望对大家有所帮助: 命令行参数应提供默认值 处理所有可能的参数错误,包括缺少参数,数据类型错误,无法找到文件等 撰写完善的文档,解释参数的含义以及如何设置 使用进度条显示长时间运行的任务...sys.argv是一个列表,包含了用户在运行脚本时输入的所有参数(包括脚本名字本身)。...从本地文件读取输入 命令行参数接收的值是将被加密的最高机密消息,所以如果要求用户直接在终端中输入纯文本,可能会引发安全顾虑。...确定解密后的 25 个文本哪个最可能是原始文本的方法之一,就是统计所有这些文本中的英文单词的个数。

    1.1K10

    会用python把linux命令写一遍的人,进大厂有多容易?

    的读者应该都对一个命令有点印象吧?没错,就是 linux 中经常会用到的 ls 命令。 文章中我就提到如何提升自己的 python 能力呢?...2018.2 - 使用模块:argparse, os 了解argparse模块 argparse是python的标准库,他可以使我们很友好的编写命令行界面,并且可以自动生成帮助文档和使用消息,还能在参数无效的时候发出错误...2. usage: 显示这个命令用法, 一般用来显示参数的用法 3. description:显示这个命令的帮助信息 4. epilog: 显示命令的帮助信息,位置在参数的下面 argparse.ArgumentParser.add_argument...只保存True和False - append: 将相同参数的不同值保存在一个list中 - count: 统计参数出现的次数 - help: 输出程序的帮助信息 - version...- nargs='*': 将所有的参数保存在列表中 - nargs='+': 将所有的参数保存在列表中,但是至少得有一个参数 - nargs=argparse.REMAINDER: 其余的参数全部保存在一个

    65830

    会用python把linux命令写一遍的人,进大厂有多容易?

    的读者应该都对一个命令有点印象吧?没错,就是 linux 中经常会用到的 ls 命令。 文章中我就提到如何提升自己的 python 能力呢?...2018.2 - 使用模块:argparse, os 了解argparse模块 argparse是python的标准库,他可以使我们很友好的编写命令行界面,并且可以自动生成帮助文档和使用消息,还能在参数无效的时候发出错误...2. usage: 显示这个命令用法, 一般用来显示参数的用法 3. description:显示这个命令的帮助信息 4. epilog: 显示命令的帮助信息,位置在参数的下面 argparse.ArgumentParser.add_argument...只保存True和False - append: 将相同参数的不同值保存在一个list中 - count: 统计参数出现的次数 - help: 输出程序的帮助信息 - version...- nargs='*': 将所有的参数保存在列表中 - nargs='+': 将所有的参数保存在列表中,但是至少得有一个参数 - nargs=argparse.REMAINDER: 其余的参数全部保存在一个

    61420

    如何利用Python学习linux命令?

    没错,就是 linux 中经常会用到的 ls 命令。 文章中我就提到如何提升自己的 python 能力呢?...使用模块:argparse, os 了解argparse模块 argparse是python的标准库,他可以使我们很友好的编写命令行界面,并且可以自动生成帮助文档和使用消息,还能在参数无效的时候发出错误...2. usage: 显示这个命令用法, 一般用来显示参数的用法 3. description:显示这个命令的帮助信息 4. epilog: 显示命令的帮助信息,位置在参数的下面 argparse.ArgumentParser.add_argument...True和False - append: 将相同参数的不同值保存在一个list中 - count: 统计参数出现的次数 - help: 输出程序的帮助信息 - version: 输出程序版本信息...- nargs='*': 将所有的参数保存在列表中 - nargs='+': 将所有的参数保存在列表中,但是至少得有一个参数 - nargs=argparse.REMAINDER: 其余的参数全部保存在一个

    81510

    python:argparse用于命令行参数解析

    argparse是python中内置的命令行解析模块,内置于python,导入即可使用。...this help message and exit argparse.ArgumentParser是创建一个参数解析实例,参数description指定帮助中程序的描述信息,prog指定帮助信息中的程序名称...action是在接收到命令行参数后如何处理参数值,默认情况下是存储值,比如上例中的f,传入了三个参数1 3 str,解析结果就是储存了一个包含三者的一个列表。...add_subparsers可以添加子命令 import argparse parser = argparse.ArgumentParser( description="Test sub commond...对象,对其添加子命令A和B,每个子命令可以继续添加argument,结果如下: # 帮助信息 >python parser-tools.py -h usage: Parse-Tools [-h] {A,

    2.6K30

    Python 命令行之旅:使用 argparse 实现 git 命令

    前言 在前面三篇介绍 argparse 的文章中,我们全面了解了 argparse 的能力,相信不少小伙伴们都已经摩拳擦掌,想要打造一个属于自己的命令行工具。...argparse 要实现子命令,那么之前介绍到的 嵌套解析器 必不可少 当用户键入子命令时,子命令所对应的子解析器需要作出响应,那么需要用到子解析器的 set_defaults 功能 针对 git add...add 子命令 同样,我们需要在 cli 函数中添加一个用于解析 add 命令的子解析器 add_parser,并指定其对应的处理函数为 handle_add。...git 和 args 对象,用以处理对应命令 至此,我们就实现了一个简单的 git 命令行,使用 python argparse-git.py -h 查看帮助如下: usage: git [-h] command...你是否想过,argparse 的四步曲虽然理解简单,但略微麻烦。有没有更简单的方式?如果我很熟悉命令行帮助语法,我能不能写个帮助字符串就把所有的命令行元信息给定义出来?

    68320

    Python中的参数传递与解析

    Python传递命令行参数 Python的命令行参数传递和C语言类似,都会把命令行参数保存到argv的变量中。对于python而言,argv是sys模块中定义的一个list。...opts的元素是一个元组,保存了解析好的选项和参数对。args保存了除去所有选项和选项的参数之外,剩下的所有参数。 如果解析出错则会抛出GetoptError异常,该异常有一个参数err。...err.opt是出错时正在解析的选项,err.msg是错误消息。 出错的情况包括: 1. 选项没有在传入参数中的短选项或者长选项列表定义。 2. 需要带参数的选项没有跟参数。 3....action指定argparse如何处理该选项的参数,共有8个值可选。 'store': 默认值,表示存储参数,如上面例子中的args.foo存储hello world....'store_const': 存储常量,常量的值位于const参数中。如: $ cat arg_parse.py #!

    2.1K70
    领券