Heim > Backend-Entwicklung > Python-Tutorial > 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
Freigeben: 2024-10-26 19:05:29
Original
913 Leute haben es durchsucht

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
Nach dem Login kopieren

Um die Funktion zu negieren, verwenden Sie:

command --no-feature
Nach dem Login kopieren

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)
    Nach dem Login kopieren

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
Nach dem Login kopieren
<code class="python">parser.add_argument("--my_bool", type=ast.literal_eval)
parser.add_argument("--my_bool", type=t_or_f)</code>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage