You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python argparse如何控制打印输出的帮助文本中的空白字符?

解决argparse帮助文本自定义换行/空白格式的方案

问题根源

argparse 默认的帮助格式化器会自动将 help 字符串中的所有换行、连续空白压缩为单个空格,因此直接在 help 字符串中插入换行符不会生效。

解决方法

初始化 ArgumentParser 时指定 formatter_class 参数为 argparse.RawTextHelpFormatter,该格式化器会完全保留你在 help 字符串中定义的换行、缩进等空白格式。

修正后的代码示例

#! /usr/bin/python3
import argparse
import json
import sys

def parseArgs():
    """
    To learn argparse.
    """
    # 指定RawTextHelpFormatter保留自定义格式
    parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter)
    parser.add_argument('--json_args', required = False, nargs = '?',
                        default = '{}',
                        # 显式用\n控制换行,避免三重引号带来的多余缩进
                        help = "JSON-encapsulated key/value optargs\ne.g. {\"foo\": \"bar\"}"
                        )
    a, _ = parser.parse_known_args()
    j = json.loads(a.json_args)
    r = {}
    r['secret'] = 'open_sesame'

    for k, v in j.items():
        r[k.lower()] = v

    return r

def main():
    args = parseArgs()
    print(json.dumps(args))

if __name__ == '__main__':
    try:
        main()
    except Exception as e:
        print(e)
        sys.exit(1)

修正后的--help输出效果

$ python3 ./a.py --help
usage: a.py [-h] [--json_args [JSON_ARGS]]

optional arguments:
  -h, --help            show this help message and exit
  --json_args [JSON_ARGS]
                        JSON-encapsulated key/value optargs
                        e.g. {"foo": "bar"}

补充说明

  • 如果你仅需要保留命令行整体描述、结尾说明文本的自定义格式,不需要修改参数 help 的格式,可以用 argparse.RawDescriptionHelpFormatter 替代 RawTextHelpFormatter。
  • 使用三重引号定义多行 help 字符串时,注意不要引入代码层级的多余缩进,否则输出的帮助文本也会带有多余的前置空白。

内容的提问来源于stack exchange,提问作者StoneThrow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:45:03