2012-11-09 12 views
6

Vorrei uno script che ha (per esempio) tre argomenti:Come posso limitare il mio script Python all'accettazione di un solo argomento? (Argparse)

import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument("--a",help="Argument a") 
parser.add_argument("--b",help="Argument b") 
parser.add_argument("--c",help="Argument c") 
args= parser.parse_args() 

Ma fare in modo che sia possibile solo specificare solo uno 'a', 'b', o 'c 'in qualsiasi momento del tempo ad es puoi specificare 'a' ma non 'b' o 'c' è possibile e come potrei ottenerlo?

risposta

10

argpase consente di specificare questo utilizzando il metodo add_mutually_exclusive_group().

import argparse 
parser = argparse.ArgumentParser() 
g = parser.add_mutually_exclusive_group() 
g.add_argument("--a",help="Argument a") 
g.add_argument("--b",help="Argument b") 
g.add_argument("--c",help="Argument c") 
args= parser.parse_args() 
+0

Grazie. Proprio quello che stavo cercando. – Sheldon

+1

@Alfe - grazie per quella modifica! – bgporter

1

Utilizzare la add_mutually_exclusive_group() di cui sopra per verificare questo a livello argparse già.

Se si desidera avere un maggiore controllo sul messaggio di errore e simili, si può ovviamente controllare i risultati in seguito:

if len([x for x in args.a, args.b, args.c if x is not None]) > 1: 
    raise Exception("Not allowed!") 
Problemi correlati