I'd like to use the ArgumentError
exception in the argparse
module in Python, but I can't figure out how to use it. The signature says that it should be called as ArgumentError(argument, message)
, but I can't figure out what argument
should be. I think it should be some part of the parser object, but I couldn't find any documentation for it.
raise argparse. ArgumentTypeError( 'invalid value!!! ' ) If the argument passed is not in the given range, for example, the argument given for the first time the image above '3', the error message invalid value!!! is displayed.
The argparse module in Python helps create a program in a command-line-environment in a way that appears not only easy to code but also improves interaction. The argparse module also automatically generates help and usage messages and issues errors when users give the program invalid arguments.
The store_true option automatically creates a default value of False. Likewise, store_false will default to True when the command-line argument is not present.
From the source documentation:
ArgumentError: The exception raised by ArgumentParser objects when there are errors with the parser's actions. Errors raised while parsing the command-line are caught by ArgumentParser and emitted as command-line messages.
The argument
parameter of the constructor is the Action
object from which the exception is raised. Usually there is no need to raise it outside of an Action
subclass, and when subclassing it, there is no need to raise it explicitly; you usually raise ValueError
(or whatever is appropriate) instead.
In regards to your comment, that you only want to accept floating point values between 0 and 1. For this you should use the ability to define custom types. You can do it for example like this:
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()
Note that this is also safe against non-floats as float(string)
will raise a ValueError
for non-floats which also triggers an invalid type error by the argparse
module. ArgumentTypeError
is just a way to specify a custom error message.
For mutually exclusive parameters, you should use argparse.add_mutually_exclusive_group
.
Parameter dependency 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.')
You can use ArgumentParser.error
to raise custom error message which will interrupt the program and print to the console.
But of course in such a basic situation it would make a lot more sense just to implicitly guess -p
if possible.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With