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

时间:2018-11-13 14:32:29

标签: python python-3.x argparse

当前,我正在使用以下代码初始化console.log(new Array === [])

ArgumentParser

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

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

我宁愿在下一行的帮助输出的“使用”部分中没有“ NETWORK”参数,而是在同一行中。有什么办法告诉/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 在参数列表中添加换行符?

2 个答案:

答案 0 :(得分:1)

尝试一下:

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

如果这样做,请注意HelpFormatter.__doc__中的以下评论:

  

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

答案 1 :(得分:0)

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

  1. 创建一个具有所需宽度的类
class _WidthFormatter(argparse.RawTextHelpFormatter):
    def __init__(self, prog: Text) -> 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 参数期望使用类,而不是类实例。