Pythonで ‘argparse.ArgumentError’を使う

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
を推測するほうがはるかに意味があります。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です