[解決済み] Pythonのargparseで同じオプションを複数回使用する
2022-10-04 19:05:02
質問
複数の入力ソースを受け取り、それぞれに対して何かを行うスクリプトを書こうとしています。次のようなものです。
./my_script.py \
-i input1_url input1_name input1_other_var \
-i input2_url input2_name input2_other_var \
-i input3_url input3_name
# notice inputX_other_var is optional
を使う方法がよくわかりません。
argparse
. それは、各オプションフラグが一度だけ使用できるように設定されているようです。複数の引数を一つのオプションに関連付ける方法は知っているのですが (
nargs='*'
または
nargs='+'
を使用することはできませんが、その場合でも
-i
フラグを複数回使用することはできません。これを達成するにはどうすればよいのでしょうか?
はっきりさせておきたいのですが、最終的に私が欲しいのは文字列のリストのリストです。ですから
[["input1_url", "input1_name", "input1_other"],
["input2_url", "input2_name", "input2_other"],
["input3_url", "input3_name"]]
どのように解決するのですか?
以下は、繰り返される 2 つの引数オプション - で定義された名前 - を処理するパーサーです。
metavar
:
parser=argparse.ArgumentParser()
parser.add_argument('-i','--input',action='append',nargs=2,
metavar=('url','name'),help='help:')
In [295]: parser.print_help()
usage: ipython2.7 [-h] [-i url name]
optional arguments:
-h, --help show this help message and exit
-i url name, --input url name
help:
In [296]: parser.parse_args('-i one two -i three four'.split())
Out[296]: Namespace(input=[['one', 'two'], ['three', 'four']])
これは
2 or 3 argument
のケースを扱うことはできません (しかし、私はこのような範囲を扱う Python のバグ/問題のために、少し前にパッチを書きました)。
で別の引数定義にするのはどうでしょう。
nargs=3
と
metavar=('url','name','other')
?
タプルの
metavar
はまた
nargs='+'
と
nargs='*'
という2つの文字列があります。
[-u A [B ...]]
または
[-u [A [B ...]]]
.
関連
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] Pythonのsuper()は多重継承でどう動くのか?
-
[解決済み] Pythonのstdlibを使ったローカルIPアドレスの検索
-
[解決済み] Pythonのre.compileは使う価値があるのか?
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] スペースがないテキストを単語のリストに分割する方法
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] Alembicアップグレードスクリプトでインサートやアップデートを実行するにはどうすればよいですか?
最新
-
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の構文に新しいステートメントを追加することはできますか?
-
[解決済み] Spyderを仮想環境で動作させるには?
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] Pandasのデータフレーム内の文字列を'date'データ型に変換するにはどうしたらいいですか?
-
[解決済み] if 節の終了方法
-
[解決済み] Python 言語を決定するには?
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?