Python argparse:在帮助条目之间插入空行

2024-03-14

使用 argparse 时,传递--help程序生成帮助文本。不幸的是,它很难阅读,因为选项之间没有空行。这里摘录一段来说明:

optional arguments:
  -h, --help            show this help message and exit
  -u FILENAME, --up-sound FILENAME
                        The sound to play when the network comes up. Default:
                        "/path/to/some/sound/file.wav"
  -d FILENAME, --down-sound FILENAME
                        The sound to play when the network goes down. Default:
                        "/path/to/some/other/sound/file.wav"
  -p EXECUTABLE, --player EXECUTABLE
                        The program to use to play sounds. Default: "play"
  -s, --silent          If specified, network_monitor.py will not play any
                        sounds.
  -c, --no-clear-screen
                        If specified, screen will not be cleared (nor extra
                        blank lines added) before network_monitor.py runs.
  --version             show program's version number and exit

请注意,在某些情况下,例如在-p and -s或之间-c and --version,很难一眼看出哪个帮助文本适用于哪个选项。条目之间应该有一个空行。例如:

  -p EXECUTABLE, --player EXECUTABLE
                        The program to use to play sounds. Default: "play"

  -s, --silent          If specified, network_monitor.py will not play any
                        sounds.

我怎样才能做到这一点?Several https://stackoverflow.com/q/3853722/713735 other https://stackoverflow.com/q/15530575/713735问题建议使用argparse.RawTextHelpFormatter。问题是,如果我使用它,我必须编写自己的逻辑来包装帮助文本,因为原始文本帮助格式化程序不进行格式化。显而易见的答案是附加'\n\n'到帮助文本的末尾并使用默认格式化程序。但令人费解的是,换行符被删除了。

这里的前进方向是什么?我正在使用Python 3.4。


您可以创建自己的帮助文本格式化程序来执行此操作。请注意,这要求您非常具体地了解实现细节argparse.HelpFormatter。因此,请考虑每个帮助格式化程序类型描述中都包含的警告:

只有此类的名称才被视为公共 API。该类提供的所有方法都被视为实现细节。

一旦我们忽略这一点,创建我们自己的帮助格式化程序,在条目之间添加一个空行就非常简单:

class BlankLinesHelpFormatter (argparse.HelpFormatter):
    def _split_lines(self, text, width):
        return super()._split_lines(text, width) + ['']

就是这样。现在当你创建ArgumentParser https://docs.python.org/3/library/argparse.html#argparse.ArgumentParser通过时的物体 formatter_class=BlankLinesHelpFormatter对于构造函数,帮助文本中每个参数之间将出现空行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python argparse:在帮助条目之间插入空行 的相关文章

  • 提交搜索表单后无法使用 Flask 应用程序从 url 检索变量

    我想在用户提交搜索表单后呈现一个新视图 我的制作方式与处理其他视图的方式相同 但不幸的是这次没有发生任何事情 我无法从应用程序路由中检索内容 所以这个问题不是重复的this https stackoverflow com questions
  • 如何在 Pygame 中制作边框

    我试图让游戏的某个区域周围有边框 并使用一种尺寸来不断更改我的代码 以便它适用于一种尺寸 这是代码 screen xpos ypos height width border width color def draw borders s x
  • pip 中的新彩色终端进度条

    我发现新版本的pip Python的包安装程序 有一个彩色进度条来显示下载进度 我怎样才能做到这一点 Like this pip 本身正在使用rich https pypi org project rich 包裹 特别是 他们的进度条文档
  • Boto3 - 打印 AWS 实例平均 CPU 利用率

    我正在尝试仅打印 AWS 实例的平均 CPU 利用率 此代码将打印出 响应 但最后的 for 循环不会打印平均利用率 有人可以帮忙吗 先感谢您 import boto3 import sys from datetime import dat
  • 如何从 Django 中的 ModelForm 手动创建选择字段?

    我有一个ModelForm其中字段之一 名为creator is a ForeignKey 因此对于 form creator Django 渲染
  • 使用 QtDesigner 的 pyQt 信号/槽

    我正在尝试编写一个与 QGraphicsView 交互的程序 我想在 QGraphicsView 中发生事件时收集鼠标和键盘事件 例如 如果用户单击 QGraphicsView 小部件 我将获得鼠标位置 类似的东西 我可以很容易地对其进行硬
  • Python中基于行输入的条件求和

    我正在尝试用Python 做一个条件和积 简化的思路如下 A 1 1 2 3 3 3 B 0 50 0 25 0 99 0 80 0 70 0 20 我想要作为输出 Total1 0 50 1 0 25 1 Total2 0 99 2 To
  • 向类添加属性的更 Pythonic 方式?

    我正在使用来自两个不同网页的数据集 但对于同一个人 数据集是合法信息 一些数据在第一页上可用 因此我使用正确的信息初始化被告对象 并将我当前没有数据的属性设置为null 这是班级 class Defendant object holds d
  • 当按下 flutter 中编写的按钮时,有没有办法运行 python 脚本?

    本质上 我想做的是 按下我在 Flutter 中编程的按钮 当按下该按钮时 Python 脚本应该开始在我的 Android 设备上运行 我想在 python 中使用 youtube dl 用于下载 Youtube 视频 库 但我想知道是否
  • 如何使用Python优化大型数据集的API调用?

    客观的 将地址列表发送到 API 并提取某些信息 例如 指示地址是否位于洪水区域的标志 Solution 适用于小数据的 Python 脚本 Problem 我想针对大输入优化当前的解决方案 如何提高 API 调用的性能 如果我有 100
  • 如何提取数字(以及比较形容词或范围)

    我正在用 Python 开发两个 NLP 项目 它们都有类似的任务提取数值和比较运算符来自句子 如下所示 greater than 10 weight not more than 200lbs height in 5 7 feets fas
  • 如何使用python将下载的音频文件扩展名重命名为mp3

    目前 我正在尝试根据艺术家姓名和歌曲标题将 YouTube 音乐视频下载为音频文件 下载所有视频后 我尝试将所有音频文件从 webm 或 mp4 扩展名重命名为 mp3 但似乎我在将文件名和扩展名更改为 mp3 时遇到了一些错误 我的代码基
  • 如何在 Python 中将列表变量传递给 subprocess.call 命令

    我有一个清单 apps apps append wq35a5huqlja45jsyukrpmwuiayovrmh apps append q7mimvgduueernwvw4y22t5huemykntw apps append pmudbp
  • 如何创建一个包含多个文件且没有子包的Python包

    我正在尝试创建一个包含一些类的包 mypackage 但希望这些类包含在多个文件中 例如 我希望 class a py 包含一个名为 ClassA 的类 等等 因此 我想要以下文件结构 mypackage init py class a p
  • 如何在 Robot Framework 中将变量定义为具有列表值的字典

    在我的一个测试用例中 我需要定义一个字典 其中键是字符串 值是字符串数组 我怎样才能在机器人框架中做到这一点 我第一次尝试使用如下所示的构造 但行不通 Variables Dictionary A StringA1 StringA2 B S
  • 为什么“模型尚未加载”?

    我正在尝试使用 customUser 安装 django registration redux 我已将其包含在我的 settings py 中 AUTH USER MODEL app customUser 注册表位于目录 registrat
  • Flask-SQLAlchemy:如何有条件地插入或更新行

    我的应用程序使用 Flask Flask SQLAlchemy Flask WTF 和 Jinja2 的组合 在当前的版本中 我有一个设置表 该表只有一条记录和一个字段 最初该表包含零条记录 我想要实现的是 鉴于数据库中不存在任何条目 则显
  • 连接字符串:两个字符串列表的“乘法”[重复]

    这个问题在这里已经有答案了 对于字符串列表 将乘法运算定义为连接 l1 aa bb cc l2 11 22 l3 l1 op l2 预期输出 l3 aa11 aa22 bb11 bb22 cc11 cc22 我们可以简单地使用 for l
  • 为什么这个多处理代码会失败? [复制]

    这个问题在这里已经有答案了 def sample pass Process target sample start Process target sample start 上面的代码失败并出现错误 已尝试在当前进程之前启动新进程 进程已完成
  • Python TDD 目录结构

    Python 中是否有用于 TDD 的特定目录结构 教程讨论测试的内容 但不讨论测试的位置 通过研究 Python Koans 怀疑它是这样的 project main program py This has main method sta

随机推荐

  • 使用 POST 发送数据到 JSONP 请求

    概括 想要使用 POST 方法将数据发送到另一个域 JSONP Code http jsonp scope baseApiUrl QueryBuilder getData callback JSON CALLBACK success fun
  • 我可以在 MSBuild 文件中执行循环吗?

    目前 我让他遵循以下代码MSBuild项目文件 这真的很简单 定义4变量并为每个变量调用一次我的 MSBuild 任务 求代码
  • 画布默认尺寸

    Chrome 似乎将画布标签的默认宽度设置为 300px 当我希望画布默认为其包含的 div 的大小 其大小未指定 时 这有点麻烦 使用示例here http jsfiddle net ecTCD 1 我希望画布默认为标题的宽度并添加填充
  • string.GetHashCode() 唯一性和冲突

    给定两个不同的字符串 情况是否总是这样s GetHashCode s1 GetHashCode 是否存在不同整数的数量小于不同字符串的数量 No Just as a simple thought experiment How many st
  • 在 Openshift 上使用 node-gyp 构建模块

    当尝试在 Openshift 上构建需要 Node gyp 的模块 如 Node canvas 时 我收到此错误 gt email protected cdn cgi l email protection install var lib r
  • 在 PySpark 中将 StringType 转换为 ArrayType

    我正在尝试在我的数据集上运行 PySpark 中的 FPGrowth 算法 from pyspark ml fpm import FPGrowth fpGrowth FPGrowth itemsCol name minSupport 0 5
  • 将重音字符转换为 ascii 字符

    从 1600 万个字符串变量的向量中删除德语 或法语 口音的最佳方法是什么 例如 干燥综合征 变为 干燥综合征 将单个字符转换为单个字符比音译更好 例如 gt ae gt oe gt ue 例如 使用正则表达式是一种选择 但有更好的选择吗
  • Rails - 验证关联的存在?

    我有一个模型 A 它与另一个模型 B 具有 has many 关联 我有一个业务要求 即插入 A 需要至少 1 个与 B 相关的记录 是否有我可以调用的方法来确保这是真的 或者我需要编写自定义验证吗 您可以使用validates prese
  • PHP rename() 不会在错误时抛出异常

    我正在使用 php 应用程序 并且有一行移动文件 我将该方法包含在 try catch 块中 这样 如果抛出错误 可以管理回滚系统 但异常永远不会被捕获 那么 重命名会抛出任何类型的异常吗 我需要尝试其他方法吗 Thanks 上面的代码 t
  • Pyplot - 反转 Y 标签而不反转条形图

    我有一个使用seaborn的因子图 import seaborn as sns sns set style white sns set context paper g sns factorplot x Ligand y KD col Ana
  • jqGrid警告请选择行位置

    有没有办法将对话框消息 请选择行 定位在所选网格的左上角 我只想在警报警告中具有相同的行为 就像编辑和删除表单一样 这个主题解决方案对我不起作用 AlertMod警告消息的JQGrid位置 https stackoverflow com q
  • 在 POST Django 上加密密码

    除了使用 SSL 之外 还有什么方法可以在第一次 POST 到服务器时在 Django 框架中加密密码 例如 如果我有一个接受用户名和密码的表单 然后将其发送到另一个视图 那么发送到后端的密码不是未加密的吗 如果是这样 有没有办法在传输到后
  • 为 testProbe 提供 ActorPath

    我有一些代码使用 ActorPath 而不是 ActorRef 向演员发送消息 system actorSelection user myActor a message 我需要确保这条消息确实被发送了 因此 我需要在测试中创建一个位于此 a
  • 如何从 localhost 向我的 docker 容器发送 HTTP 请求?

    我在向 Docker 容器 它是与 Redis 数据库通信的 Node js API 发出 HTTP 请求时遇到问题 该容器在 VM Docker Toolbox 内运行 我已经使用所需的端口设置了 Dockerfile 和 docker
  • 两个具有共享滚动条的 Gtk TextView 小部件

    我想要两个并排的 TextView 小部件 它们与单个滚动条一起滚动 我可以将两个 TextView 小部件放入 Hbox 然后将它们添加到 Viewport 然后添加到 ScrolledWindow 然而 这不会按我想要的方式工作 从滚动
  • 在 Octave 中的曲面图顶部绘制 3D 线

    我根据一些数据绘制了一个曲面 在同一个图中 我想要一条 3D 线 我有要绘制的线的 x y z 值 当我尝试在同一图中使用plot3 x y z 执行此操作时 该线始终位于表面下方 有没有什么办法解决这一问题 不知道Matlab中是否也出现
  • 在android中获取列表视图项目的点击次数

    我想计算列表视图中特定项目的点击次数 假设列表视图中有 3 个项目 我第一次单击第一个项目 它应该显示第一个项目点击计数为 1 的 toast 消息 现在 如果我再次单击第一个项目 消息应该是第一个项目点击计数为 2 对于其他项目依此类推
  • JUnit5:测试多个类而不重复代码

    我已经用 Java 构建了自己的堆栈实现 如下所示 有一个接口 Stack 它提供了基本功能 pop push peek 等 然后我有 2 个具体的类 一个借助数组 另一个带有链表 在这种情况下如何并不重要 现在我的问题是 我想用 JUni
  • Android sqlite将WAL文件内容刷新到主数据库文件中

    我正在尝试创建我的应用程序数据库内容的备份 对于大多数设备来说 它工作正常 但有一些设备默认启用了 wal 模式 这会导致问题 从我读过的所有内容来看 调用 pragma wal checkpoint 应该将 wal 文件的内容刷新到主数据
  • Python argparse:在帮助条目之间插入空行

    使用 argparse 时 传递 help程序生成帮助文本 不幸的是 它很难阅读 因为选项之间没有空行 这里摘录一段来说明 optional arguments h help show this help message and exit