[解決済み] argparseによるブーリアン値のパース
2022-01-29 05:15:48
質問
argparseを使って、"-foo True" または "-foo False" として書かれたブール値のコマンドライン引数をパースしたいと思います。例えば
my_program --my_boolean_flag False
しかし、以下のテストコードでは、私が望むようなことはできません。
import argparse
parser = argparse.ArgumentParser(description="My parser")
parser.add_argument("--my_bool", type=bool)
cmd_line = ["--my_bool", "False"]
parsed_args = parser.parse(cmd_line)
悲しいかな
parsed_args.my_bool
は次のように評価されます。
True
. を変更しても同様です。
cmd_line
を
["--my_bool", ""]
というのは驚くべきことです。
bool("")
に評価されます。
False
.
どうすれば argparse にパースさせることができますか?
"False"
,
"F"
であり、それらの小文字の変形は
False
?
解決方法は?
これは実は時代遅れなんです。Python 3.7+用です。 Argparse が boolean 引数をサポートするようになりました。 (BooleanOptionalAction を検索してください)。
実装はこのようになります。
import argparse
ap = argparse.ArgumentParser()
# List of args
ap.add_argument('--foo', default=True, type=bool, help='Some helpful text that is not bar. Default = True')
# Importable object
args = ap.parse_args()
もう一つ言及しておくと、これは argparse.ArgumentTypeError によって、引数の True と False 以外のすべてのエントリーをブロックします。何らかの理由でこれを変更したい場合は、このためのカスタムエロークラスを作成することができます。
関連
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] 環境変数の値にアクセスする方法
-
[解決済み] ブーリアン値を格納するために使用するMySQLデータ型
-
[解決済み] シェルスクリプトでブール変数を宣言して使用するにはどうすればよいですか?
-
[解決済み] Pythonで文字列からbooleanに変換する?
-
[解決済み] C言語でのブーリアン値の使用
-
[解決済み] Argparse オプションの位置引数?
-
[解決済み] argparseでコマンドラインの引数としてリストを渡すにはどうしたらいいですか?
-
[解決済み] シンプルなargparseの例題募集:1引数、3結果
-
[解決済み] Python argparse 引数なしのコマンドラインフラグ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python call matlab メソッドの詳細
-
PicgoのイメージベッドツールをPythonで実装する
-
Python jiabaライブラリの使用方法について説明
-
Pythonによるjieba分割ライブラリ
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み] データ型が理解できない
-
[解決済み] Pythonで文字列からbooleanに変換する?