2016-02-17 33 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。

相關問題