47

これは可能ではないと思いますが、argparse からの例外を自分で処理したいと考えています。

例えば:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', help='foo help', required=True)
try:
    args = parser.parse_args()
except:
    do_something()

私がそれを実行すると:

$ myapp.py
usage: myapp --foo foo
myapp: error: argument --foo is required

しかし、代わりに例外に陥ってほしい。

4

2 に答える 2

78

メソッドをサブクラス化ArgumentParserし、オーバーライドしてerror、エラーが発生したときに別のことを行うことができます。

class ArgumentParserError(Exception): pass

class ThrowingArgumentParser(argparse.ArgumentParser):
    def error(self, message):
        raise ArgumentParserError(message)

parser = ThrowingArgumentParser()
parser.add_argument(...)
...
于 2013-02-06T11:54:51.593 に答える