Python:仅在未使用其他参数时才需要参数

时间:2016-02-17 10:29:58

标签: python parameters

我试图仅在参数-r不存在时才使参数-i成为必需参数。这就是我现在所拥有的:

 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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

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

在链接文本中,它声明:

  

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

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