【问题标题】:Python Argparse - Set default value of a parameter to another parameterPython Argparse - 将参数的默认值设置为另一个参数
【发布时间】:2018-01-22 23:43:45
【问题描述】:

我添加了一个参数-c,现在我想添加另一个参数-ca。如何将 -ca 的默认值设置为 -c?我想要做的是如果没有指定-ca,将-c分配给-ca。

parser.add_argument("-c", type=str)

parser.add_argument("-ca", type=str, default=XXX)

【问题讨论】:

  • 如果-ca没有指定,那么-c应该分配给-ca,但是如果-c-ca没有指定呢?
  • 在这种情况下,您可以假设 -c 是强制性的。
  • 在这种情况下,在读取数据到 arg-parse 并在从 argparse 对象读取后处理它?问题是什么,?只是好奇地问。我也会尝试编写示例并更新您。
  • 是的,我可以在从 argparse 输入读取后检查并处理它。我只是想知道是否有一个内置函数可以做到这一点,而无需我显式编写逻辑。

标签: python argparse


【解决方案1】:

通常,单破折号标志是单个字符。所以-ca 是不明智的,虽然不是非法的。在正常的 POSIX 实践中,它可以解释为 -c a-c -a

此外,argparse 允许标记参数 (optionals) 以任何顺序出现。

解析从分配所有默认值开始。当遇到相关标志时,新值将覆盖默认值。鉴于这种顺序,一个参数不可能将另一个参数的值作为默认值。

一般来说,参数之间的交互最好在解析之后处理。有一个mutually_exclusive 分组,但没有mutually_inclusive。您可以通过自定义 Action 类构建某种交互,但实现它与任何解析后测试一样多。

总而言之,最简单的就是使用默认的defaultNone和test

if args.ca is None:
    args.ca = args.c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-03
    • 2023-03-11
    • 2015-11-05
    • 1970-01-01
    • 2014-12-07
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多