ホームページ  >  記事  >  バックエンド開発  >  argparse でブール値を正しく解析するにはどうすればよいですか?

argparse でブール値を正しく解析するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-26 18:56:29607ブラウズ

How Can I Parse Boolean Values Correctly in argparse?

argparse を使用したブール値の解析

argparse では、ブール値コマンドライン引数の解析は一般的なタスクですが、これを試みるときによくある落とし穴が発生します。 type=bool 引数を使用して、「--foo True」または「--foo False」のような値を解析します。驚くべきことに、空の文字列を引数として使用する場合でも (例: "--foo " ")、解析された値は True と評価されます。

正しいブール解析のために、argparse は 2 つの推奨アプローチを提供します。

正規のアプローチ:

Python 3.9 以降でネイティブにサポートされている '--feature' および '-no-feature' 構文を使用します:

<code class="python">parser.add_argument('--feature', action=argparse.BooleanOptionalAction)</code>
Python バージョン 3.9 より前の場合:

<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」の存在により値が True に設定され、「--no-feature」により値が False に設定されます。どちらの引数も存在しない場合は、デフォルトで True になります。

オプションのアプローチ (型変換を使用):

「--arg 」の場合必要に応じて、カスタム型変換関数を使用できます。一例は、ast.literal_eval:

<code class="python">parser.add_argument("--arg", type=ast.literal_eval)</code>
です。あるいは、ユーザー定義関数を作成することもできます:

以上がargparse でブール値を正しく解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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