Comment analyser les arguments booléens de ligne de commande avec argparse : Pourquoi \'--foo False\' ne signifie pas toujours faux ?

Linda Hamilton
Libérer: 2024-10-31 12:26:03
original
426 Les gens l'ont consulté

How to Parse Boolean Command-Line Arguments with argparse: Why

Analyse des arguments booléens de ligne de commande avec argparse

Lors de l'utilisation de argparse pour analyser des arguments booléens, les utilisateurs peuvent rencontrer des problèmes s'ils saisissent des valeurs telles que " --foo True" ou "--foo False". Malgré l'hypothèse intuitive selon laquelle "--foo False" devrait être évalué à False, argparse l'interprète comme True. Ce comportement se produit également lors de la saisie d'une chaîne vide pour l'argument booléen.

Pour résoudre ce problème, argparse propose des options d'analyse alternatives pour les indicateurs booléens :

1. Action=argparse.BooleanOptionalAction (Python 3.9 )

En spécifiant action=argparse.BooleanOptionalAction, argparse interprétera automatiquement la présence du drapeau sans argument comme True, et son absence comme False. Par exemple :

<code class="python">parser.add_argument('--feature', action=argparse.BooleanOptionalAction)</code>
Copier après la connexion

2. Store_True et Store_False

Pour les versions Python antérieures à 3.9, l'approche suivante peut être utilisée :

<code class="python">parser.add_argument('--feature', action='store_true')
parser.add_argument('--no-feature', dest='feature', action='store_false')
parser.set_defaults(feature=True)</code>
Copier après la connexion

Cela permet aux utilisateurs d'activer ou de désactiver une fonctionnalité en passant "--feature " ou "--no-feature", respectivement.

3. Fonction de type personnalisé

Si vous le souhaitez, une fonction de type personnalisé peut être utilisée pour gérer l'analyse booléenne. Voici un exemple :

<code class="python">def t_or_f(arg):
    ua = str(arg).upper()
    if 'TRUE'.startswith(ua):
        return True
    elif 'FALSE'.startswith(ua):
        return False
    else:
        raise ValueError("Invalid input")</code>
Copier après la connexion

Cette fonction peut ensuite être utilisée comme argument de type lors de l'ajout de l'argument booléen à l'analyseur.

En utilisant ces méthodes, les utilisateurs peuvent analyser efficacement la commande booléenne. arguments de ligne et assurez-vous que les valeurs telles que "False" sont interprétées correctement.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!