Python で 'argparse.ArgumentError' を使用する 質問する

Python で 'argparse.ArgumentError' を使用する 質問する

ArgumentErrorPython のモジュールで例外を使用したいのですargparseが、使い方がわかりません。シグネチャには として呼び出す必要があると書かれていますArgumentError(argument, message)が、何をすればよいのかわかりませんargument。パーサー オブジェクトの一部であるはずだと思うのですが、それに関するドキュメントが見つかりませんでした。

ベストアンサー1

からソースドキュメント:

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)発生させValueError、モジュールによって無効な型エラーもトリガーしますargparseArgumentTypeErrorは、カスタム エラー メッセージを指定する方法にすぎません。

相互に排他的なパラメータ

相互に排他的なパラメータの場合は、argparse.add_mutually_exclusive_group

パラメータ依存性

パラメータ依存性は、実際には引数によって行われるべきものではない。パーサー意味の詳細については、代わりに自分で行う必要があります。

args = parser.parse_args()
if args.w and not args.p:
    parser.error('-p is required when -w is set.')

使用できますArgumentParser.errorプログラムを中断してコンソールに出力するカスタム エラー メッセージを生成します。

-pしかし、もちろん、このような基本的な状況では、可能であれば暗黙的に推測する方がはるかに理にかなっています。

おすすめ記事