【问题标题】:Python argparse version: Newlines not respected [duplicate]Python argparse 版本:不尊重换行符 [重复]
【发布时间】:2019-09-23 20:01:41
【问题描述】:

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

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

【问题讨论】:

标签: python argparse


【解决方案1】:

尝试使用RawTextHelpFormatter

parser = argparse.ArgumentParser(
    description="test", formatter_class=argparse.RawTextHelpFormatter
)

您应该知道此格式化程序会影响每个参数,而不仅仅是version

【讨论】:

    【解决方案2】:

    如果你想对版本输出做一些非常具体的事情,你可以使用自定义操作:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-08
      • 1970-01-01
      • 2017-07-23
      相关资源
      最近更新 更多