Heim  >  Artikel  >  Backend-Entwicklung  >  Warum wird „--foo False“ beim Parsen boolescher Argumente mit argparse als „True“ ausgewertet?

Warum wird „--foo False“ beim Parsen boolescher Argumente mit argparse als „True“ ausgewertet?

Linda Hamilton
Linda HamiltonOriginal
2024-10-26 19:05:29818Durchsuche

Why Does

Boolesche Werte mit argparse analysieren

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=argparse.BooleanOptionalAction)
  • 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn