Maison > développement back-end > Tutoriel Python > Pourquoi \'--foo False\' est-il évalué à True lors de l'analyse d'arguments booléens avec argparse ?

Pourquoi \'--foo False\' est-il évalué à True lors de l'analyse d'arguments booléens avec argparse ?

Linda Hamilton
Libérer: 2024-10-26 19:05:29
original
911 Les gens l'ont consulté

Why Does

Analyse des valeurs booléennes avec argparse

Question :

Lors de l'analyse des arguments booléens de ligne de commande avec argparse, pourquoi les valeurs comme "--foo False" évalué à True au lieu de False ?

Réponse :

Méthode canonique :

La L'approche recommandée consiste à utiliser le format suivant :

command --feature
Copier après la connexion

Pour annuler la fonctionnalité, utilisez :

command --no-feature
Copier après la connexion

argparse fournit une prise en charge intégrée pour cela :

  • 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)
    Copier après la connexion

Méthode alternative pour l'analyse personnalisée :

Si le format "--foo True/False" est préféré, un L'option consiste à utiliser ast.literal_eval ou une fonction personnalisée comme type :

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
Copier après la connexion
<code class="python">parser.add_argument("--my_bool", type=ast.literal_eval)
parser.add_argument("--my_bool", type=t_or_f)</code>
Copier après la connexion

Cette fonction personnalisée interprète les majuscules True/Fals comme des valeurs booléennes, permettant une analyse flexible de ces valeurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal