python - 如何修改 pythons argparse 中位置参数的元变量?

标签 python argparse

argparse 包中,metavar 参数修改程序显示的帮助信息。下面的程序不是为了工作,它只是用来演示 metavar 参数的行为。

import argparse
if __name__ == '__main__':
    parser = argparse.ArgumentParser(description = "Print a range.")

    parser.add_argument("-range1", nargs = 3, type = int, help = "Specify range with: start, stop, step.", metavar = ("start", "stop", "step"))
    parser.add_argument("-range2", nargs = 3, type = int, help = "Specify range with: start, stop, step.", metavar = "r2")

对应的帮助信息为:

usage: main.py [-h] [-range1 start stop step] [-range2 r2 r2 r2]

Print a range.

optional arguments:
  -h, --help            show this help message and exit
  -range1 start stop step
                        Specify range with: start, stop, step.
  -range2 r2 r2 r2      Specify range with: start, stop, step.

请注意-range1-range2 的区别。显然 -range1 是帮助消息的首选方式。

到目前为止,一切对我来说都很清楚。但是,如果我将可选的 -range1 参数更改为位置 range1 参数,argparse 无法处理 metavar< 的元组 参数(ValueError:要解压的值太多)。
我能够让它工作的唯一方法是 -range2 完成的方式。但是,帮助信息远不如 -range1 案例好。

有没有办法获得与 -range1 案例相同的帮助消息,但对于位置参数而不是可选的?

最佳答案

怎么样:

import argparse
if __name__ == '__main__':
    parser = argparse.ArgumentParser(description = "Print a range.")

    parser.add_argument("start", type = int, help = "Specify start.", )
    parser.add_argument("stop", type = int, help = "Specify stop.", )
    parser.add_argument("step", type = int, help = "Specify step.", )

    args=parser.parse_args()
    print(args)

产生

% test.py -h
usage: test.py [-h] start stop step

Print a range.

positional arguments:
  start       Specify start.
  stop        Specify stop.
  step        Specify step.

optional arguments:
  -h, --help  show this help message and exit

关于python - 如何修改 pythons argparse 中位置参数的元变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7953623/

相关文章:

python - QSound 在对象内部的意外行为

python - argparse:如何调用方法而不是函数?

python 使用argparse获取位置参数的长度

python - 使用 reindex 平衡 DataFrame

python - 如何使 argparse 解析器也用作子解析器

Python argparse : Is there a way to specify a range in nargs?

python-3.x - 可选位置参数,仅接受指定列表中的值

python - 如何在 Google App Engine 中动态更改 python 应用程序的日志记录级别?

python - 对数据 Pandas 进行操作

python - 如何在所有轴上垂直显示光标,但仅在鼠标指针位于顶部的轴上水平显示光标