【问题标题】:Python argparse dependence of argumentsPython argparse 参数的依赖关系
【发布时间】:2016-10-28 22:31:08
【问题描述】:

我有两个参数:--1st 和--2nd 我正在尝试仅在设置“第一个”参数时才需要“-2nd”参数。

例如:

如果设置了“1st”并且设置了“2nd” - 好

如果未设置“1st”且未设置“2nd” - 好

其他情况不好。请帮帮我

【问题讨论】:

  • 两个参数都是可选的吗?还是只有第二个可选?
  • 两者都是可选的。但如果是第 1 组,则需要第 2 组。如果设置为 2nn,则需要第一个。其他情况一定有错误
  • 我会让它们在 argparse 中都是可选的,然后编写我自己的代码来验证调用 parse_args 的结果。
  • 听起来总是需要两者?如果是这样,只需使用一个使用两个值的参数。

标签: python argparse


【解决方案1】:

我喜欢 Kabanus 的解决方案。这是另一个,对于新用户来说更简单:

parser = argparse.ArgumentParser()
parser.add_argument('--first')
parser.add_argument('--second')
options = parser.parse_args()

# Error checking
if (options.first is None) != (options.second is None):
    print 'Error: --first and --second must both be supplied or omitted'

讨论

  • 我不使用--1st--2nd,因为options.1st 不起作用,getattr(options, '1st') is too messy. Instead, I use--firstand--second` 用于说明目的。
  • (options.first is None) != (options.second is None) 表达式简洁地表达了您的错误情况。

【讨论】:

  • 如果您为有用的 Python 属性名称提供了 dest='first',您仍然可以使用 --1st 作为命令行名称。
  • parser.error('--first and --second must both be supplied or omitted') 以获得更一致的错误消息
猜你喜欢
  • 2014-03-19
  • 2013-01-17
  • 2012-10-09
  • 2015-02-09
  • 1970-01-01
  • 2011-05-26
  • 2020-03-04
  • 2015-12-28
  • 2017-10-16
相关资源
最近更新 更多