2016-02-17 16 views
0

我试图仅在参数-r不存在时才使参数-i为必需参数。这是我的时刻:Python:仅在没有使用其他参数时才需要参数

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

您的问题已经在这里解答:http://stackoverflow.com/questions/18025646/python-argparse-conditional-requirements – CaptainCap

+0

这也可以帮助,即使只是为了后来的读者,指定什么参数解析器,你是使用。 Optparse,argparse等 –

+0

道歉我正在使用argparse – Catherine

回答

1

您可以检查选项解析器的结果,并在报告或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

这听起来像你的程序是根据你提供的程序的选项执行两个不同的动作。 这并不直接回答你的问题,但是,也许在你的情况,你可以在链接的文本利用的mutual exclusion feature

,它指出:

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

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

相关问题