私はすでにスタックオーバーフローでこれに対する答えを調べようとしましたが、私の特定のケースに対する正確な答えを見つけることができません.
この最初のリンクには、最初のセクションに同じ質問がありますが、回答がありません ( python argparse: parameter=value )。そして、この2番目の質問は似ていますが、私の特定のケースではうまくいかないようです( argparseを使用してフォーム "arg= val"の引数を解析します)。
だから私の状況はこれです - 私は他の多くのスクリプトで使用されているpythonラッパーを書き直しています(これらの他のスクリプトを変更したくないです)。現在、python ラッパーは--key=value
、さまざまな引数の形式のコマンド ライン引数で呼び出されますが、手動で解析されました。それらをargparseで解析したいと思います。
注: 引数名が扱いにくいためdest
、add_argument のオプションを使用して名前を変更しています。
parser = argparse.ArgumentParser(description='Wrappin Ronnie Reagan')
parser.add_argument("--veryLongArgName1", nargs=1, dest="arg1", required=True)
parser.add_argument("--veryLongArgName2", nargs=1, dest="arg2")
parser.add_argument("--veryLongArgName3", nargs=1, dest="arg3")
userOpts = vars(parser.parse_args())
渡されたコマンドラインを正しく解析しているように見えますが、これをヘルプとして表示します。
usage: testing_argsparse.py [-h] --veryLongArgName1 ARG1
[--veryLongArgName2 ARG2]
[--veryLongArgName3 ARG3]
testing_argsparse.py: error: argument --veryLongArgName1 is required
しかし、私が望むのは、すべてのパラメータが--key=value
ではなく、フォーマットで指定されることです--key value
。すなわち
usage: testing_argsparse.py [-h] --veryLongArgName1=ARG1
[--veryLongArgName2=ARG2]
[--veryLongArgName3=ARG3]
testing_argsparse.py: error: argument --veryLongArgName1 is required
前もって感謝します!