【问题标题】:Python: Make a parameter required only if another parameter isn't usedPython:仅在不使用另一个参数时才需要一个参数
【发布时间】:2016-02-17 19:18:44
【问题描述】:

我试图使参数 -i 仅在参数 -r 不存在时才需要。这是我目前拥有的:

 parser.add_argument(
        '-i', '--input-location',
        help='Input location',
        required=True,
        dest='input_location'
    )

 parser.add_argument(
        '-r','--report',
        help='Show data report ',
        required=False,
        default=False,
        action='store_true'
    )

所以在几乎所有情况下 -i 都需要作为参数:

python program.py -i /input_location

但是如果使用了-r参数,那么-i参数就不需要了:

python program.py -r

【问题讨论】:

  • 您的问题已经在这里得到解答:stackoverflow.com/questions/18025646/…
  • 它也将有所帮助,即使只是为了以后的读者,指定您正在使用的参数解析器。 Optparse、argparse 等
  • 抱歉我正在使用 argparse

标签: python parameters


【解决方案1】:

您可以在之后检查选项解析器的结果,并在 report 或 input_location 均未填写时发出错误信号。

这是我的解决方案:

from optparse import OptionParser
import sys

parser = OptionParser()


parser.add_option(
        '-i', '--input-location',
        help='Input location',
        default=False,
        dest='input_location'
    )

parser.add_option(
        '-r','--report',
        help='Show data report ',

        default=False,
        action='store_true'
    )



(options, args) = parser.parse_args()

print options, args

if options.report == False and options.input_location == False:
    print "Error: You need to specfify at least -i or -r parameter."
    sys.exit(1)

【讨论】:

    【解决方案2】:

    听起来您的程序正在执行两个不同的操作,具体取决于您向程序提供的选项。 这并不能直接回答您的问题,但也许在您的情况下,您可以使用mutual exclusion feature

    在链接的文本中,它声明:

    add_mutually_exclusive_group() 方法还接受一个必需的参数,以指示至少需要一个互斥参数

    这将强制用户使用 -i 或 -r。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      • 2012-07-19
      • 2016-03-31
      • 2021-12-30
      • 2011-10-07
      • 1970-01-01
      相关资源
      最近更新 更多