Frage:
Warum Werte beim Parsen boolescher Befehlszeilenargumente mit argparse? wie „--foo False“ als wahr statt als falsch auswerten?
Antwort:
Kanonische Methode:
Die Der empfohlene Ansatz ist die Verwendung des folgenden Formats:
command --feature
Um die Funktion zu negieren, verwenden Sie:
command --no-feature
argparse bietet integrierte Unterstützung dafür:
Python < 3.9:
parser.add_argument('--feature', action='store_true') parser.add_argument('--no-feature', dest='feature', action='store_false') parser.set_defaults(feature=True)
Alternative Methode für benutzerdefiniertes Parsen:
Wenn das Format „--foo True/False“ bevorzugt wird, eine Die Option besteht darin, ast.literal_eval oder eine benutzerdefinierte Funktion als Typ zu verwenden:
import ast def t_or_f(arg): ua = str(arg).upper() if 'TRUE'.startswith(ua): return True elif 'FALSE'.startswith(ua): return False else: pass # Handle error condition appropriately
<code class="python">parser.add_argument("--my_bool", type=ast.literal_eval) parser.add_argument("--my_bool", type=t_or_f)</code>
Diese benutzerdefinierte Funktion interpretiert True/False in Großbuchstaben als boolesche Werte und ermöglicht so eine flexible Analyse dieser Werte.
Das obige ist der detaillierte Inhalt vonWarum wird „--foo False' beim Parsen boolescher Argumente mit argparse als „True' ausgewertet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!