Python argparse版本:不接受换行符

时间:2019-05-06 07:48:06

标签: python argparse

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

关于如何解决此问题的任何提示?

2 个答案:

答案 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选项,不会影响您的其他选项。