我试图仅在参数-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
答案 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。