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

如何让我的argparse子解析器格式像在列表中,而不是在一行上?

要让argparse子解析器的格式像在列表中而不是在一行上,可以通过设置argparse库中的formatter_class参数来实现。formatter_class参数用于指定帮助信息的格式化类。

在argparse中,默认使用的是argparse.HelpFormatter类来格式化帮助信息,该类会将子解析器的帮助信息显示在一行上。为了让子解析器的格式像在列表中,可以自定义一个格式化类,继承自argparse.HelpFormatter,并重写其中的方法。

以下是一个示例代码,展示如何实现子解析器格式像在列表中:

代码语言:txt
复制
import argparse

class ListFormatter(argparse.HelpFormatter):
    def _format_action(self, action):
        parts = super()._format_action(action)
        if action.nargs == argparse.PARSER:
            # 将子解析器的帮助信息格式化为列表
            parts = [self._indent_text(part, self._current_indent) for part in parts]
        return parts

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

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

# 添加子解析器命令
subparser = subparsers.add_parser('command', help='subcommand help', formatter_class=ListFormatter)

# 添加子解析器参数
subparser.add_argument('arg1', help='argument 1')
subparser.add_argument('arg2', help='argument 2')

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

在上述代码中,我们自定义了一个名为ListFormatter的格式化类,继承自argparse.HelpFormatter。在_format_action方法中,我们判断如果当前解析的是子解析器,则将帮助信息的每个部分进行缩进处理,以实现列表的效果。

通过将formatter_class参数设置为ListFormatter,即可应用自定义的格式化类,从而使子解析器的格式像在列表中。

请注意,以上示例代码中没有提及腾讯云相关产品和产品介绍链接地址,因为根据问题要求,不能提及特定的云计算品牌商。

相关搜索:如何让我的Spyder代码在GPU上运行,而不是Ubuntu上的cpu?如何让函数中的for循环在一行中返回(而不是打印)?如何让我的python tkinter输出显示在GUI中而不是python shell中?有没有办法让我的代码在一行中得到所有的结果,而不是多行?如何让我的slackbot在线程中回复,而不是在Slack中回复整个通道在Zapier中,如何让我的Python "Run Code“操作的输入作为列表传递,而不是连接字符串?我可以让我的程序在列表中的变量(所有整数)之间随机选择,并返回变量而不是值吗?如何将无序列表放入父span中,我的会跳到下一行而不是向下流动如何在没有[]和下一行的情况下显示数组列表,而不是在[1,2,3]上显示如何让我的slackbot在一个线程中回复,而不是使用Google App脚本回复整个频道如何让用户选中复选框来授予权限,而不是在React-Native中单击Alert上的on?如何让Windows10上的bash.exe在IntelliJ中自动打开zsh shell,而不是常规的bash shell在我的子域上,mkdir()函数在主根目录中创建directory,而不是在所需的目录中创建Directory,并且它不会将图像上传到其中如何修改此代码,以便子页面下拉列表中的更改在应用后仅反映在父页面中&而不是在更改时?- ReactJS如何配置我的wordpress core2.2应用程序,让asp.net加载到它自己的子文件夹中,而不是根文件夹?当我在我的线程中添加列表框项目时,我需要发出蜂鸣声。它在一个线程中,而thread子例程不会让我做任何事情,而是添加项我在JSON中嵌套了一个名为episodes的列表对象,那么如何根据id父对象而不是position对象来获取剧集列表呢?如何在材料ui卡中更改悬停时的文本颜色?我想在卡片悬停时更改文本颜色,而不是在文本上悬停?如果可能的话,我如何才能改善下面的python代码的时间复杂性呢?否则,我可以在一行中完成所有的工作而不是这个原始代码吗?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python 模块:argparse

argparse 模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数。...单个解析器能够通过提供 parents= 参数给 ArgumentParser 而使用相同的参数而不是重复这些参数的定义。...如果你在子解析器之后改变父解析器是,这些改变不会反映在子解析器上。 formatter_class ArgumentParser 对象允许通过指定备用格式化类来自定义帮助格式。...(default: 42) MetavarTypeHelpFormatter 为它的值在每一个参数中使用 type 的参数名当作它的显示名(而不是使用通常的格式 dest ): >>> parser =...fromfile_prefix_chars 有些时候,先举个例子,当处理一个特别长的参数列表的时候,把它存入一个文件中而不是在命令行打出来会很有意义。

2.5K10
  • argparse 的高级用法

    这看上去比 click 费劲多了,而且还只是拿到解析结果,没有处理,但这个缺点也让 argparse 更加灵活,我们可以控制它如何找到对应的处理方法。 继承和扩展,这不就是 OOP 的思想吗?...这样我就实现了命令解析的解耦,与子命令有关的参数在自己的类中的 add_argument 添加就可以了。...argparse 是拿到 sys.argv 之后按顺序看,如果找到一个参数就把结果中对应这个参数的值赋好,如果找到一个子命令的名称则取得这个子命令的解析器 递归调用这个解析器去解析剩下的命令行参数。...也就是说如果没有匹配到这个子命令是不会执行任何该子命令的相关动作,也不会把这个子命令的参数加入到解析器中。 而相同层级的子命令必然是互斥的,不可能存在同时匹配到多个子命令的情况。...比如 python cli.py greet goodbye 匹配到的是 greet 命令,而 goodbye 会被当作 greet 的参数在 greet 自己的解析器中解析。

    26840

    Python 命令行之旅:深入 argparse(二)

    比如,通过指定 formatter_class=argparse.RawTextHelpFormatter,我们可以让帮助内容遵循原始格式: >>> import argparse >>> parser...那么共享解析器就显得尤为必要,这样就可以少去重复代码。 我们可以这样做,在 base.py 中定义一个父解析器,存放 AccessKey 相关参数配置,作为公用的解析器。...由于后续的子解析器会自动生成帮助信息,这里的父解析器指定 add_help=False 以不自动生成帮助信息: # bash.py import argparse parser = argparse.ArgumentParser...通过实现嵌套解析器,我们可以很容易地对这种子命令的形式进行解析。 在嵌套解析器中,我们定义一个父解析器来作为整个命令行的入口,再分别定义N个子解析器来对应N个子命令,由此即可实现整个功能。...在下篇文章中,将带大家一起用 argparse 实现日常工作中常见的 git 命令,想想是不是有些兴奋呢?

    1.4K31

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

    argparse 要实现子命令,那么之前介绍到的 嵌套解析器 必不可少 当用户键入子命令时,子命令所对应的子解析器需要作出响应,那么需要用到子解析器的 set_defaults 功能 针对 git add...实现 假定我们在 argparse-git.py[2] 文件中实现我们的 git 程序。 构建解析器 我们需要构建一个父解析器,作为程序的根解析器,程序名称指定为 git。...,在 status_parser.set_defaults 函数中,能接收任意名称的关键字参数,这个参数值会存放于父解析器解析命令行参数后的变量中。...比如,在本文示例程序中,我们为每个子解析器定义了 handle,那么 args = parser.parse_args() 中的 args 将具有 handle 属性,我们传入不同的子命令,那么这个 handle...额外要做的是,要在子解析器 add_parser 上添加一个 pathspec 位置参数,且其数量是任意的: def cli(): ...

    68320

    Python 命令行之旅:初探 argparse

    花下猫语:国庆期间,公众号停更了几天,那是因为我去江西参加婚礼了,如今正在写“观感”呢(写完后会发在文艺号“豌豆花”上)。所以,原创文章要再拖一下了。 不过,公众号更新是不会停的。...今天,继续分享一个优质的系列文章:深入使用 argparse。这个系列属于一个更大的“讲解开源项目系列”,说实话,这是我一直想要写的系列。这方面的文章实在太少见了,而读者也不多。...我觉得不分享出来,会是一种埋没,但愿对大家有启发吧,喵~~ ? 剧照 | 《走出非洲》 前言 你是否好奇过在命令行中敲入一段命令后,它是如何被解析执行的?...默认情况下,参数取自 sys.argv[1:],它就是你在命令行敲入的一段命令(不含文件名)所对应的一个字符串列表。...揭开命令行工具的神秘面纱后,是不是发现它并没有想象中的困难?反倒是感受到一种简单而又强大的优雅呢? 不过这还远远不是 argparse 的全部面貌。

    68721

    Python argparse标准库快速入门

    下面就让我们来看看如何使用argparse标准库吧。...prog - 程序的名称(默认:sys.argv[0]),默认是Python程序的文件名 usage - 描述程序用途的字符串(默认值:从添加到解析器的参数生成) description - 在参数帮助文档之前显示的文本...假如多个parser有一些可以共享的参数,可以通过设置子parser的方式来共享 formatter_class - 用于自定义帮助文档输出格式的类 prefix_chars - 可选参数的前缀字符集合...metavar - 在使用方法消息中使用的参数值示例。 dest - 被添加到 parse_args() 所返回对象上的属性名。...而bar参数修改了dest,所以底层属性名发生了变化,但是在帮助信息中并没有什么改变。

    91010

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

    我们可以在命令行上键入不同的参数并将这些参数传递到脚本中,而不是每次运行脚本时都更改.py文件中的代码。因此,使用CLI是非常灵活和方便的,而且,从黑屏启动程序会让你更酷,更像一个真正的程序员。...之前,我们在《使用Python拆分和合并PDF文件》中实现了PDF的拆分与合并,这里将在此基础上,添加一个命令行界面。...我们还将稍微调整代码,定义三个变量,而不是硬编码程序中的所有值:PDF源文件、要提取的页面,以及最终生成的PDF,此设置将允许我们在任何PDF文件上使用该程序。...让我们看看如何通过在命令行中运行以下简单脚本来使用sys.argv。...对于(Windows)计算机上的文件路径,由于有反斜杠/,Python不喜欢未处理的文件路径;对于页面,整数列表[1,2,3]比字符串“1,2,3”更有意义,所以我们必须处理这些参数的格式。

    2.9K30

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

    argparse是一个Python模块:命令行选项、参数和子命令解析器。...通过使用这种方法,可以在使用 1、argparse简介: argparse 模块是 Python 内置的一个用于命令项选项与参数解析的模块,argparse 模块可以让人轻松编写用户友好的命令行接口。...通过在程序中定义好我们需要的参数,然后 argparse 将会从 sys.argv 解析出这些参数。argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。...store_const,表示赋值为const; append,将遇到的值存储成列表,也就是如果参数重复则会保存多个值; append_const,将参数规范中定义的一个值保存到一个列表; count,存储遇到的次数...,而 ArgumentParser 将自动从 sys.argv 中确定命令行参数。

    2.7K20

    《Python实例》基础之argparse,提供一个友好的接口说明,老大说我做的真好

    提供文档太费时,又写不好,不提供文档吧又不太又好,今天在python中发现了一个参数解析器,完美的解决这个问题,今天讲一下参数解析器的使用,好了,废话蛮多了,开始吧。...1、模块介绍 模块的源码位置 lib/argparse,如果你在代码中使用的不是这个位置,说明你导入错了。...argparse 可以让你轻松的编写用户友好的命令行接口, argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。...') 3、在使用参数的地方读取参数 vars(parser.parse_args()) 4、在pycharm 中如何调用 4.1 在命令行界面查看说明文档 python argFile.py -h...中调用传参文件 在pycharm 中执行需要参数的文件如果不传递参数会报下面的错误 ?

    67430

    Google 开源的 Python 命令行库:初探 fire

    argparse 是面向过程的,需要先设置解析器,再定义参数,再解析命令行,最后实现业务逻辑。docopt 先用声明式的语法定义出参数,再过程式地解析命令行和实现业务逻辑。...实现命令行程序的步骤: 对于 argparse 来说,要先设置解析器,再定义参数,再解析命令行,最后实现业务逻辑(四步) 对于 docopt 来说,要先定义定义接口描述,再解析命令行,最后实现业务逻辑...我们不妨考虑下 Python 中的函数,函数是不是可以对应一个命令行程序,而函数的参数可以对应命令行程序的参数和选项呢?...再看看 Python 中的类,一个类是不是可以对应一个命令行程序,而类中的每个实例方法就可以对应子命令,实例方法中的参数就是对应子命令的参数和选项。...这么一想,理论上确实是可以实现的,我们不妨通过下面的示例来看看 fire 是如何让我们通过简单的方式实现命令行程序。

    52510

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

    使用 argparse 模块,我们可以轻松的编写出用户友好的命令行接口。 2....,看一下方法中每一个参数的含义: prog:程序的名称(默认:sys.argv[0]) usage:描述程序用途的字符串(默认值:从添加到解析器的参数生成) description:在参数帮助文档之前显示的文本...(默认值:无) epilog:在参数帮助文档之后显示的文本(默认值:无) parents:一个 ArgumentParser 对象的列表,它们的参数也应包含在内 formatter_class:用于自定义帮助文档输出格式的类...,看一下参数说明: name or flags:一个命名或者一个选项字符串的列表,例如:-f,--foo action:当参数在命令行中出现时使用的动作基本类型 nargs:命令行参数应当消耗的数目 const...help:一个选项作用的简单描述 metavar:在使用方法消息中使用的参数值示例 dest:被添加到 parse_args() 所返回对象上的属性名 下面我们通过具体示例看一下: import argparse

    60820

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

    使用 argparse 模块,可以轻松编写用户友好的命令行界面。程序定义了它需要的参数,argparse 就会找出如何从 sys.argv 中解析出这些参数。...位置参数:这些参数是在命令行中按照顺序传递的,不带前缀。例如,parser.add_argument("filename") 表示一个位置参数,用户需要提供一个文件名。...ArgumentParser.add_argument() 方法将单独的参数规范附加到解析器上。它支持选项参数、接受值的选项和开/关标志。 type:命令行参数应该被转换成的数据类型。...这样做有几个好处: 可读性:使用字典可使得后续代码更加易读,因为可以直接通过键来访问参数值,而不是通过属性。 灵活性:字典提供了更多操作和遍历元素的方法,使得处理复杂情况时更加灵活。...位置参数是根据其在命令行中出现的位置来处理的,而可选参数则可以根据用户的选择进行设置。 ️

    21600

    Python-argparse模块

    最近在GitHub上欣赏别人写的代码,发现一个常用的模块–argparse,居然我到现在才知道,简直是罪过,于是马上开始了这个模块用法的学习,这样后面我在写的时候就可以摈弃input()函数来交互了。...argparse模块的功能 该模块可以在命令模式下完成使用者与程序之间的参数交互,并且这个模块会自动生成help菜单,让使用者可以通过 -h|–help查看程序的使用方法等。...使用方法 这里主要分四步: import导入该模块:import argparse 创建解析器对象:parse = argparse.ArgumenParser() 添加需要的命令行参数与选项:parse.add_argument...先贴出argparse.ArgumenParser()中的可选参数及其含义: | 名字 | 默认值 | 功能...| 实列 这里贴出我写的简单列子来辅助说明该模块的使用方法 # author:Tommonkey # date:2022/5/4 import sys import argparse

    47720

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

    在今天互联网技术的发展中,以Python为代表的脚本语言在各个领域都广泛应用。而处理命令行参数是Python编程中常见的需求之一。...本文将介绍如何在Python中高效处理命令行参数,帮助更好地利用Python进行开发。  1.了解命令行参数的基本概念  命令行参数是在运行程序时由用户在命令行中输入的参数。...2.使用argparse库处理命令行参数  Python标准库中的argparse模块提供了一个简单而强大的命令行参数解析器。...此外,argparse库还支持子命令,允许在一个主程序中定义多个命令并分别处理它们的参数。  4.使用合适的帮助信息  对命令行程序来说,良好的帮助信息是非常重要的。...可以利用argparse库提供的各种特性,优化命令行参数的处理过程,提升程序的用户体验和性能。  本文介绍了如何在Python中高效处理命令行参数。

    21560

    教你一招:用70 行 Python 代码编写一个递归下降解析器

    在深入到实际的解析器实现之前,我们可对语法进行讨论。在我之前发表的文章中,我使用过LR解析器,我可以像如下方式定义计算器语法(标记使用大写字母表示): ?...但是解析器并不是那么简单,它又会产生另一个问题:当左递归正确的解析3-2-1为(3-2)-1,而右递归却错误的解析为3-(2-1)。...我还没想到一个简单的解决办法,所以为了让事情简单,我决定让它继续使用错误的解析格式,并在后面处理这个问题(请看步骤4) 第三步:解析为一个AST 算法其实很简单。...结果是一个tuple,当然我们并没有看到有剩下的标识。匹配结果并不易于阅读,所以让我吧结果画成一个图: ? 这就是概念上的AST。...通过你思维逻辑,或者在纸上描绘,想象解析器是如何运作的,这样是个很好的锻炼。我不敢说这样是必须的,除非你想神交。你可以通过AST来帮助你实现正确的算法。

    1.2K100

    使用OpenCV,Python和模板匹配来播放“Waldo在哪里?”

    在这篇博客文章中,我将向您展示如何使用OpenCV和模板匹配功能来查找总是隐藏在视野之外的讨厌的Waldo。...你需要什么: Python,NumPy和OpenCV;了解一些基本的图像处理概念将有所帮助,但不是必须要求。这个操作指南是为了让您了解如何使用OpenCV进行模板匹配。没有安装这些库?没问题。...假设:我假设你已经在python2.6或python2.7环境中安装了NumPy和OpenCV。同样,你可以在这里下载一个预配置了所有必需的包的虚拟机。...好的,让我们看一看: # 导入(import)必要的包 import numpy as np import argparse import imutils import cv2 # 构造参数解析器并解析参数...首先,--puzzle是我们的沃尔多谜题图像,而--waldo的路径,是沃尔多查询图像的路径。 再一次提醒,我们的目标是使用模板匹配在谜题图像中查找查询图像。

    2.6K60
    领券