在Python的argparse中设置输出的行长度

问题描述 投票:0回答:2

目前我正在使用以下代码来初始化我的

ArgumentParser

parser = argparse.ArgumentParser(description="Help line 1\n" +
                                             "Help line 2",
                                 formatter_class=argparse.RawTextHelpFormatter)

添加一些参数后,给出以下输出:

/usr/bin/python3.6 /data/Poseidon/dev/Python/trident.py -h
usage: trident.py [-h] [--verbose] [--images] --source SOURCE --network
                  NETWORK

Help line 1
Help line 2

我不想在下一行的帮助输出的“用法”部分中使用“NETWORK”参数,而是在同一行中。有没有办法告诉

argparse
not 在参数列表中添加换行符?

python python-3.x argparse
2个回答
9
投票

试试这个:

parser = argparse.ArgumentParser(description="Help line 1\n" +
                                             "Help line 2",
                                 formatter_class=lambda prog: argparse.RawTextHelpFormatter(prog, width=99999))

如果您这样做,请记下

HelpFormatter.__doc__
的评论:

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


0
投票

更好的分辨率(与https://stackoverflow.com/a/53283500/10418734相比)是

  1. 创建一个具有所需宽度的类
class _WidthFormatter(argparse.RawTextHelpFormatter):
    def __init__(self, prog: str) -> None:
        super().__init__(prog, width=99999)
  1. 并使用该类
parser = argparse.ArgumentParser(
    description=(
        "Help line 1\n"
        "Help line 2"
    ),
    formatter_class= _WidthFormatter
)

此解决方案是首选,因为

formatter_class
中的
argparse.ArgumentParser
参数期望使用类,而不是类实例。

© www.soinside.com 2019 - 2024. All rights reserved.