Pythonの argparse
モジュールで ArgumentError
例外を使用したいのですが、どのように使用するのか分かりません。このシグネチャは、
ArgumentError(argument、message)
として呼び出されるべきだと言いますが、引数
がどのようなものであるべきかわかりません。私はそれがパーサーオブジェクトの一部であるべきだと思うが、私はそれについてのドキュメントを見つけることができなかった。
ソースドキュメントから:
ArgumentError:パーサーのアクションにエラーがある場合に、ArgumentParserオブジェクトによって生成された例外です。コマンドラインの解析中に発生したエラーは、ArgumentParserによって捕捉され、コマンドラインメッセージとして出力されます。
コンストラクタの argument
パラメータは、例外が発生した
Action
オブジェクトです。通常、 Action
サブクラスの外にそれを呼び出す必要はなく、サブクラス化するときに明示的に呼び出す必要はありません。通常は
ValueError
(またはそれ以外のもの)を作成します。
0と1の間の浮動小数点値
あなたのコメントに関しては、0と1の間の浮動小数点値だけを受け入れたいと思っています。このために、カスタム型を定義する能力を使うべきです。例えば、次のようにすることができます:
def percentFloat (string):
value = float(string)
if value < 0 or value > 1:
raise argparse.ArgumentTypeError('Value has to be between 0 and 1')
return value
parser = argparse.ArgumentParser()
parser.add_argument('test', type=percentFloat)
parser.parse_args()
float(string)
は、
argparseによって無効な型エラーを引き起こす非浮動小数点数に対して
ValueError
を発生させるので、非浮動小数点に対しても安全ですモジュールです。
は単なる指定方法ですカスタムエラーメッセージ。
ArgumentTypeError
相互に排他的なパラメータ
For 相互に排他的なパラメータ, you should use
.
argparse.add_mutually_exclusive_group
パラメータの依存性
パラメータの依存性 isn’t really something that should be done by the
argument parser. For semantic details, you should instead
simply do it yourself:
args = parser.parse_args()
if args.w and not args.p:
parser.error('-p is required when -w is set.')
ArgumentParser.error
を使用してカスタムを呼び出すことができますエラーメッセージが表示され、プログラムが中断され、コンソールに出力されます。
しかしもちろん、このような基本的な状況では、できるだけ暗黙のうちに -p
を推測するほうがはるかに意味があります。