def args_parser():
parser = argparse.ArgumentParser(description='myparser')
parser.add_argument('--k', type=int, default=100, help = 'numbers')
return parser
parser = args_parser():
args = parser.parse_args([])
print(args) # see all values
print(args.k) # see just the k attribute
parse_args()
parst die sys.argv
wie in der Kommandozeile vorgesehen. parse_args([])
analysiert eine leere Liste, als ob Sie das Skript ohne Argumente aufgerufen hätten. Ich prüfe regelmäßig ein Parser-Setup mit solchen Aufrufen.
Mit Ihrer Argumentdefinition funktioniert die []
einwandfrei und zeigt den Standardwert k
. Bei anderen Definitionen könnte []
einen Fehler verursachen. Wenn Sie zum Beispiel
parser.add_argument('infile', help='positional file name')
jetzt eine Zeichenfolge ist erforderlich. Für eine einfache Position wie diese ist kein Standard erforderlich und auch nicht sinnvoll. Andere Parameterkombinationen können jedoch einen Standardwert verwenden.
Ich könnte Ihnen zeigen, wie Sie auf die default
zugreifen, wie im Befehl add_argument
festgelegt, aber das beinhaltet einige undokumentierte Funktionen. Darüber hinaus gibt es mehrere Möglichkeiten, Standardwerte zu definieren, sodass das Thema kompliziert werden kann.
Anyways einfach das parse_args
mit einer leeren Liste läuft oft genug.
parser.add_argument('--k', type=int, default=100, help = 'numbers, %(default)s')
Zum Beispiel in einer interaktiven ipython
Sitzung:
In [73]: parser=argparse.ArgumentParser()
In [74]: parser.add_argument('--k', type=int, default=100, help = 'numbers, %(default)s')
Out[74]: _StoreAction(option_strings=['--k'], dest='k', nargs=None,
const=None, default=100, type=<class 'int'>, choices=None,
help='numbers, %(default)s', metavar=None)
In [75]: parser.print_help()
usage: ipython3 [-h] [--k K]
optional arguments:
-h, --help show this help message and exit
--k K numbers, 100
In [76]: parser.parse_args([]) # displays args
Out[76]: Namespace(k=100)
In [78]: parser.parse_args(['--k','200'])
Out[78]: Namespace(k=200)
'args = args_parser()
Sie können auch mit einem kleinen Zusatz den Standard in der Hilfezeile machen anzuzeigen. parse_args() '? Sie müssten 'args.k' machen, um' 100' zu bekommen, aber sonst ... – jonrsharpe
'parser.parse_args(). K' – metatoaster