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 サイトの他の関連記事を参照してください。