ホームページ  >  記事  >  バックエンド開発  >  argparse を使用してブール コマンドライン引数を解析する方法: 「--foo False」が必ずしも False を意味しないのはなぜですか?

argparse を使用してブール コマンドライン引数を解析する方法: 「--foo False」が必ずしも False を意味しないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-31 12:26:03412ブラウズ

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

argparse を使用したブール コマンドライン引数の解析

argparse を使用してブール引数を解析する場合、値を " として入力すると問題が発生する可能性があります。 --foo True」または「--foo False」。 「--foo False」は False と評価されるはずであるという直感的な仮定にもかかわらず、argparse はそれを True として解釈します。この現象は、ブール引数に空の文字列を入力した場合にも発生します。

この問題に対処するために、argparse はブール フラグの代替解析オプションを提供します:

1。 Action=argparse.BooleanOptionalAction (Python 3.9 )

action=argparse.BooleanOptionalAction を指定すると、argparse は引数のないフラグの存在を True として、フラグの不在を False として自動的に解釈します。例:

<code class="python">parser.add_argument('--feature', action=argparse.BooleanOptionalAction)</code>

2. Store_True および Store_False

3.9 より前の Python バージョンでは、次のアプローチを使用できます:

<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>

これにより、ユーザーは「--feature」を渡すことで機能を有効または無効にできます。 " または "--no-feature" それぞれ。

3.カスタム タイプ関数

必要に応じて、カスタム タイプ関数を使用してブール解析を処理できます。以下に例を示します。

<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>

この関数は、ブール型引数をパーサーに追加するときに型引数として使用できます。

これらのメソッドを利用することで、ユーザーはブール型コマンドを効果的に解析できます。行の引数を変更し、「False」のような値が正しく解釈されることを確認します。

以上がargparse を使用してブール コマンドライン引数を解析する方法: 「--foo False」が必ずしも False を意味しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。