2012-11-09 3 views
6

ich ein Skript möchte, die (zum Beispiel) hat drei Argumente:Wie beschränke ich mein Python-Skript darauf, nur ein Argument zu akzeptieren? (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() 

Aber machen es so, dass es nur möglich ist, nur entweder ‚a‘ angeben, ‚b‘ oder ‚c "Zu gegebener Zeit, z Sie können "a", aber nicht "b" oder "c" angeben. Ist das möglich und wie würde ich es erreichen?

Antwort

10

Mit argpase können Sie dies mithilfe der Methode add_mutually_exclusive_group() angeben.

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

Danke. Genau das, wonach ich gesucht habe. – Sheldon

+1

@Alfe - danke für das Bearbeiten! – bgporter

1

Verwenden Sie die add_mutually_exclusive_group() oben erwähnte dies bereits auf der argparse Ebene zu überprüfen.

Wenn Sie mehr Kontrolle haben, um Fehlermeldung und dergleichen mögen, können Sie natürlich auch die Ergebnisse später überprüfen:

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