目前我正在使用以下代码来初始化我的
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 在参数列表中添加换行符?
试试这个:
parser = argparse.ArgumentParser(description="Help line 1\n" +
"Help line 2",
formatter_class=lambda prog: argparse.RawTextHelpFormatter(prog, width=99999))
如果您这样做,请记下
HelpFormatter.__doc__
的评论:
只有此类的名称才被视为公共 API。类提供的所有方法都被视为实现细节。
更好的分辨率(与https://stackoverflow.com/a/53283500/10418734相比)是
class _WidthFormatter(argparse.RawTextHelpFormatter):
def __init__(self, prog: str) -> None:
super().__init__(prog, width=99999)
parser = argparse.ArgumentParser(
description=(
"Help line 1\n"
"Help line 2"
),
formatter_class= _WidthFormatter
)
此解决方案是首选,因为
formatter_class
中的 argparse.ArgumentParser
参数期望使用类,而不是类实例。