2012-12-28 75 views
16

如何限制argparse選項的值?限制命令行選項的值

在下面的代碼sau選項應僅接受若干01bg應該只允許一個整數。我怎樣才能實現這個?

import os 
import sys, getopt 
import argparse 

def main(): 
    parser = argparse.ArgumentParser(description='Test script') 
    parser.add_argument('-sau','--set',action='store',dest='set',help='<Required> Set flag',required=True) 
    parser.add_argument('-bg','--base_g',action='store',dest='base_g',help='<Required> Base g',required=True) 
    results = parser.parse_args() # collect cmd line args 
    set = results.set 
    base_g = results.base_g 

if __name__ == '__main__': 
    main() 
+1

不掩蓋內置:'設置= results.set'(你看到語法高亮顏色) – eumiro

+0

另外,在旁註中,如果需要參數,它們不應該是標誌而是位置參數。 –

+0

查看本教程http://docs.python.org/howto/argparse – Tshepang

回答

17

您可以使用add_argumenttypechoices參數。只接受「0」和「1」,你會怎麼做:

parser.add_argument(…, choices=set("01")) 

而且只接受整數,你會怎麼做:

parser.add_argument(…, type=int) 

注意,在選擇,你會必須提供您指定的類型作爲類型參數的選項。因此,要檢查整數只允許0和1,你會怎麼做:

parser.add_argument(…, type=int, choices=set((0,1))) 

例子:

>>> import argparse 
>>> parser = argparse.ArgumentParser() 
>>> _ = parser.add_argument("-p", type=int, choices=set((0, 1))) 
>>> parser.parse_args(["-p", "0"]) 
Namespace(p=0)