【问题标题】:Multiple options for the same argument in ArgumentParser PythonArgumentParser Python 中同一参数的多个选项
【发布时间】:2020-02-21 18:30:02
【问题描述】:

我想知道是否可以在 ArgumentParser 中为相同的参数提供多个选项。

我知道,对于相同的论点,除了“--”之外,还可以通过“-”来做到这一点。例如:

parser.add_argument('-d', '--dataset_name', type=str)

前面的代码是合法的。但是,我想知道以下代码是否仍然有效?

parser.add_argument('--dn', '--dataset_name', type=str)

现在我为同一个参数指定了两个带有“--”的参数选项。

我的另一个问题是,如果下面的代码是正确的?

parser.add_argument('-dn', '--dataset_name', type=str)

这里我给用“-”定义的选项两个字符。

【问题讨论】:

  • 你试过了吗?你会得到一个错误argparse.ArgumentError: argument -dn/--dataset_name: conflicting option string: --dataset_name
  • 尝试使用多个选项列表['-d', '-n']
  • 我知道,我想知道是否有办法解决它。
  • @Barmar,除了 --dataset_name 之外,我想为 --dn 之类的选项名称提供两个或更多字母。我不知道该怎么做,
  • 以单个连字符开头的选项始终是单字母选项。

标签: python python-3.x arguments


【解决方案1】:

是的,你可以,
试试这个,

import argparse
parser = argparse.ArgumentParser(prog="FooBar")
parser.add_argument("--foo", "--bar") #<-- by default the output will be on 1st option `foo`

parser.parse_args("--foo 5".split()) #--> Namespace(foo='5')
parser.parse_args("--bar 5".split()) #--> Namespace(foo='5')

您还可以设置dest,即命名空间中的变量,值最终会出现在其中。

import argparse
parser = argparse.ArgumentParser(prog="FooBar")
parser.add_argument("-f", "--foo", "--bar", dest="baz")

parser.parse_args("-f 5".split())    #--> Namespace(baz='5')
parser.parse_args("--bar 5".split()) #--> Namespace(baz='5')

但您不能将两个字符用于带有单个 - 的选项
single - 表示甚至可以组合在一起的单个字符选项,例如。 command -a -b -c 可以写成 command -abc,前提是 ab 不要期望值。

【讨论】:

    猜你喜欢
    • 2015-10-27
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多