我编写了以下示例代码来演示我的问题。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-v', '--version', action='version',
version='%(prog)s 1.0')
parser.parse_args()
这会产生以下帮助消息。
$ python foo.py --help
usage: foo.py [-h] [-v]
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
我想自定义此帮助输出,使其将所有短语和句子大写,并在句子后加上句号。换句话说,我希望这样生成帮助消息。
$ python foo.py --help
Usage: foo.py [-h] [-v]
Optional arguments:
-h, --help Show this help message and exit.
-v, --version Show program's version number and exit.
这是我可以使用 argparse API 控制的东西吗?如果是这样,如何?你能提供一个小例子来说明如何做到这一点吗?
原文由 Lone Learner 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先:大写这些短语与惯例背道而驰,而且
argparse
并没有真正帮助您轻松更改这些字符串的工具。这里有三种不同类别的字符串:来自帮助格式化程序的样板文本、部分标题和每个特定选项的帮助文本。所有这些字符串都是可本地化的;您 可以 通过gettext()
模块支持 为所有这些字符串提供“大写”翻译。也就是说,如果您有足够的决心并 稍微阅读源代码,您可以深入并替换所有这些字符串。version
操作包含默认的help
文本,但您可以通过设置help
参数来提供您自己的文本。这同样适用于help
动作;如果您将add_help
参数 设置为False
您可以手动添加该操作:接下来,
optional arguments
消息是 _组标题_;每个解析器都有两个默认组,一个用于位置参数,另一个用于可选。您可以通过属性_positionals
和_optionals
来访问它们,它们都有一个title
属性:_请注意_,通过访问以下划线开头的名称,您正在冒险进入模块的未记录的私有 API,您的代码可能会在未来的更新中中断。
最后,要更改
usage
字符串,您必须继承帮助格式化程序;将子类作为formatter_class
参数 传递:演示,将这些放在一起: