2012-12-28 12 views
16

Come limitare i valori delle opzioni argparse?Limitazione dei valori delle opzioni della riga di comando

Nel codice sau seguenti opzioni dovrebbero accettare solo un numero di 0 o 1 e bg dovrebbe consentire solo un numero intero. Come posso implementarlo?

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

non mascherare il builtin: 'set = results.set' (si vedere il colore di evidenziazione della sintassi) – eumiro

+0

Inoltre, in un sidenote, se gli argomenti sono richiesti, non dovrebbero essere flag ma argomenti posizionali. –

+0

controlla questo tutorial http://docs.python.org/howto/argparse – Tshepang

risposta

17

Offriamo le type e choices argomenti di add_argument. Per accettare solo '0' e '1', faresti:

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

E per accettare solo numeri interi, faresti:

parser.add_argument(…, type=int) 

Si noti che nelle scelte, ti devi dare le opzioni nel tipo che hai specificato come argomento tipo. Quindi, per verificare la presenza di interi e consentire solo 0 e 1, faresti:

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

Esempio:

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