Callum Booth
Callum Booth

Reputation: 377

Python arguments not being parsed when passed

I have the following code at the minute:

parser = argparse.ArgumentParser(prog='Tempus')
ex_group = parser.add_mutually_exclusive_group(required=True)

## Miscellaneous but needed args
parser.add_argument('--mode', type=str, choices=['xml', 'text', 'term'], 
                        dest='mode', required=True, help='export mode')
parser.add_argument('-v', '--verbose', action='store_true', 
                       dest='verbose', help='enable verbose/debug mode')

# Input methods
ex_group.add_argument('--i', action='store_true', 
                       dest='interactive', help='enter interactive mode')
ex_group.add_argument('--p', metavar='I', type=float, 
                       dest='integer', help='percentage to use')

args = parser.parse_args()

However when I pass the arguments that are needed, in any order, I get the error:

Tempus: error: argument --mode is required

And this happens, even when I pass that argument. Any way to sort this?

Thank you!

EDIT: Thanks everyone, I got it working, turns out executing it without first specifying the python exe before it doesn't pass arguments.

Just another quick question: is it possible to create an argument similar to --mode in my code, but let an additional argument be passed to one of the choices?

For example, have a command such as --input which can take two arguments 'integer' and 'interactive', but I can also pass a number to the --input integer command? So the command would read: --input integer 23 for example? Is this possible?

Upvotes: 0

Views: 305

Answers (1)

Leovt
Leovt

Reputation: 313

Try 1. to print sys.argv before parsing or 2. to explicitely add arguments inside the script as in http://docs.python.org/dev/library/argparse.html#parsing-arguments

So you can exclude any confusion about which arguments argparse actually sees.

Upvotes: 1

Related Questions