2016-10-11 4 views
0

Ich möchte die Verwendung eines Python-Programms, das die Argparse-Modul verwendet protokollieren. Derzeit zeichnet der Protokollierer die Befehlszeilenverwendung auf, die der in this post angegebenen Antwort ähnelt. Dies gibt jedoch nur die Befehlszeilenargumente und nicht die in argparse gesetzten Standardwerte (was schließlich der beabsichtigte Zweck ist). Gibt es eine einfache Möglichkeit, ALLE argparse-Optionen zu drucken, um einen schönen, sauberen usage Protokolleintrag zu erstellen, der die Standardwerte enthält?Python: Drucken Sie alle argparse Argumente einschließlich Voreinstellungen

Es ist nicht schwierig, in den argparse-Namespace zu gehen, um jedes Argument nach Namen zu holen, aber ich hoffe, dass jemand eine knappe Möglichkeit hat, die benötigten Informationen zu extrahieren.

Jede Richtung ist willkommen!

Antwort

2

Ich habe etwas ähnliches in einer Anwendung getan, hoffentlich geben die folgenden Schnipsel Ihnen, was Sie brauchen. Es ist der Aufruf an Vars, der mir ein Wörterbuch mit allen Argumenten gab.

parser = argparse.ArgumentParser(description='Configure') 
.... 
args = parser.parse_args() 
...... 
options = vars(args) 
+0

Großartig! Wenn jemand interessiert, hier ist meine Implementierung mit der Protokollierung: 'logger.info (" Verwendung: \ n {0} \ n ".format (" ".join ([x für x in sys.argv]))) ' 'logger.debug (" Alle Einstellungen verwendet: ")' 'für k, v in sortierten (vars (args) .items()):' 'logger.debug (" {0}: {1} ". Format (k, v)) ' – NWaters

Verwandte Themen