Sto provando a creare un argomento facoltativo per uno script che non può assumere valori o 2 valori, nient'altro. Riuscirai a farlo usando argparse?argparse - richiede 2 valori o nessuno per un argomento facoltativo
# desired output:
# ./script.py -a --> works
# ./script.py -a val1 --> error
# ./script.py -a val1 val2 --> works
versione 1 - accetta 0 o 1 Valori:
parser = argparse.ArgumentParser()
parser.add_argument("-a", "--action", nargs="?", const=True, action="store", help="do some action")
args = parser.parse_args()
# output:
# ./script.py -a --> works
# ./script.py -a val1 --> works
# ./script.py -a val1 val2 --> error
Versione 2 - accetta esattamente 2 valori:
parser = argparse.ArgumentParser()
parser.add_argument("-a", "--action", nargs=2, action="store", help="do some action")
args = parser.parse_args()
# output:
# ./script.py -a --> error
# ./script.py -a val1 --> error
# ./script.py -a val1 val2 --> works
Come si coniuga questi 2 versioni differenti in modo che lo script accetti 0 o 2 valori per l'argomento, ma rifiuta quando ha solo 1 valore?
con questa soluzione "./script.py" si comporta come "./script.py -a" – xgord
@xgord: in entrambi i casi non si vorrebbe un errore. Vuoi un errore quando usi './script.py -a foo' o' ./script.py -a foo bar baz' e più a lungo. –
@xgord: questo controllo * non * sulla gestione del caso './Script.py', solo su un errore quando è stato usato' -a' ma con il numero sbagliato di argomenti. Cosa ti aspettavi che accadesse invece in quel caso? –