[解決済み] argparse: どのサブパーサーが使用されたかを特定する [重複].
2022-04-13 12:51:43
質問
私はこれが簡単でなければならないと思うが、私はそれを得ることはありません。
以下のようなarparseパーサがあるとします。
import argparse
parser = argparse.ArgumentParser( version='pyargparsetest 1.0' )
subparsers = parser.add_subparsers(help='commands')
# all
all_parser = subparsers.add_parser('all', help='process all apps')
# app
app_parser = subparsers.add_parser('app', help='process a single app')
app_parser.add_argument('appname', action='store', help='name of app to process')
どのサブパーサーが使用されたかを特定するにはどうすればよいですか? を呼び出すことができます。
print parser.parse_args(["all"])
は空の名前空間を与えてくれます。
Namespace()
解決方法は?
編集する。 ご覧ください Quornianの回答 は、私のより優れた回答であり、受け入れられるべきものです。
によると
argparse ドキュメント
の結果は
parser.parse_args(...)
は、メイン パーサーと選択されたサブ パーサーの属性を含むだけです。残念ながら、これはどのサブパーサーが使用されたかを判断するのに十分な情報ではないかもしれません。ドキュメントでは
set_defaults(...)
メソッドでこの問題を解決できます。
例えば
set_defaults()
をあなたのコードに追加してください。
import argparse
parser = argparse.ArgumentParser( version='pyargparsetest 1.0' )
subparsers = parser.add_subparsers(help='commands')
# all
all_parser = subparsers.add_parser('all', help='process all apps')
all_parser.set_defaults(which='all')
# app
app_parser = subparsers.add_parser('app', help='process a single app')
app_parser.add_argument('appname', action='store', help='name of app to process')
app_parser.set_defaults(which='app')
ここで
print parser.parse_args(["all"])
その結果は
Namespace(which='all')
をチェックしてください。
add_subparsers()
のドキュメントを参照してください。
関連
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み] argparseによるブーリアン値のパース
-
[解決済み] Argparse オプションの位置引数?
-
[解決済み] argparseでコマンドラインの引数としてリストを渡すにはどうしたらいいですか?
-
[解決済み] シンプルなargparseの例題募集:1引数、3結果
-
[解決済み] Python argparse 引数なしのコマンドラインフラグ
-
[解決済み] argparseのヘルプテキストに改行を挿入するには?
-
[解決済み】Argparse: デフォルト値を'--help'に含める方法?
-
[解決済み】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の非常に便利な2つのデコレーターを解説
-
ピロウズ画像色処理の具体的な活用方法
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
Python入門 openを使ったファイルの読み書きの方法
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み] argparseで選択されたサブコマンドを取得する