Python的argparse模块允许显式指定版本。不幸的是,它似乎并不尊重输出中的换行符:
import argparse
parser = argparse.ArgumentParser(description="test")
parser.add_argument("--version", "-v", action="version", version="some\ntext")
parser.parse_args()
python3 a.py -v
some text
关于如何解决此问题的任何提示?
答案 0 :(得分:1)
尝试使用RawTextHelpFormatter
:
parser = argparse.ArgumentParser(
description="test", formatter_class=argparse.RawTextHelpFormatter
)
您应该知道此格式化程序会影响每个参数,而不仅仅是version
。
答案 1 :(得分:0)
如果要对版本输出进行非常特定的操作,可以使用自定义操作:
#!/usr/bin/env python
import argparse
class VersionAction(argparse.Action):
def __init__(self, option_strings, version=None, **kwargs):
super(VersionAction, self).__init__(option_strings, nargs=0, help="show program's version number and exit", **kwargs)
self.version = version
def __call__(self, parser, namespace, values, option_string=None):
print('%s' % self.version)
exit(0)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="args")
parser.add_argument("--version", "-v", action=VersionAction, version="some\ntext")
parser.parse_args()
此外,这只会更改您的-v
选项,不会影响您的其他选项。