- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Python 2.7 中使用 argparse我想使用 RawTextHelpFormatter
在 epilog 中获取换行符和 ArgumentDefaultsHelpFormatter
获取默认帮助中显示的默认值。
例如,如果 ArgumentParser 的结尾部分是:
epilog="first line\n second line"
并且有参数:
group.add_argument(
"-d",
"--development",
action="store_true",
dest="build_dev",
default="False",
help="Build development code",
)
group.add_argument(
"-p",
"--production",
action="store_true",
dest="build_prod",
default="False",
help="Build production release",
)
帮助输出应该是:
-d, --development Build development code (default: False)
-p, --production Build production release (default: False)
first line
second line
有办法吗?
最佳答案
在帮助中插入您自己的默认设置是可行的,但并不理想。这是因为它是一个不必要的维护负担,原因如下:
每个新论点都需要添加该文本
所有这些重复使代码变得困惑,模糊了重要的细节
future 的设计更改(例如不再显示默认值)将需要从每个参数中删除该文本
高级功能,例如是否显示默认值等用户可配置选项将被默认文本的硬编码排除
因此,最好利用 python 的多重继承来制作具有所有相关提供的格式化程序功能的新格式化程序,在本例中为 RawTextHelpFormatter 和 ArgumentDefaultsHelpFormatter,例如像这样:
import argparse
class UltimateHelpFormatter(
argparse.RawTextHelpFormatter, argparse.ArgumentDefaultsHelpFormatter
):
pass
group = argparse.ArgumentParser(
epilog="first line\n second line",
formatter_class=UltimateHelpFormatter,
)
group.add_argument(
"-d",
"--development",
action="store_true",
dest="build_dev",
default="False",
help="Build development code",
)
group.add_argument(
"-p",
"--production",
action="store_true",
dest="build_prod",
default="False",
help="Build production release",
)
group.print_help()
上面给出了这个输出:
usage: prog.py [-h] [-d] [-p]
optional arguments:
-h, --help show this help message and exit
-d, --development Build development code (default: False)
-p, --production Build production release (default: False)
first line
second line
关于带有 ArgumentDefaultsHelpFormatter 和 RawTextHelpFormatter 的 Python Argparse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61324536/
在我的参数解析代码中,我需要使用 argparse.RawTextHelpFormatter,但我也希望以与默认格式化程序相同的方式自动以固定宽度换行。 有什么优雅的方法可以将这两种行为结合起来吗?
Python 手册说 argparse.RawTextHelpFormatter 假设我的帮助消息已经正确格式化并保留所有空格。 不正确 - 如果我有多个连续的空行,它仍然会将它们折叠为单个空行。 我
我在 Python 2.7 中使用 argparse我想使用 RawTextHelpFormatter 在 epilog 中获取换行符和 ArgumentDefaultsHelpFormatter 获
我是一名优秀的程序员,十分优秀!