python argh/argparse: How can I pass a list as a command-line argument? python argh/argparse: How can I pass a list as a command-line argument? python python

python argh/argparse: How can I pass a list as a command-line argument?


With argparse, you just use type=int

import argparseparser = argparse.ArgumentParser()parser.add_argument('-a', '--arg', nargs='+', type=int)print parser.parse_args()

Example output:

$ python test.py -a 1 2 3Namespace(arg=[1, 2, 3])

Edit: I'm not familiar with argh, but it seems to be just a wrapper around argparse and this worked for me:

import argh@argh.arg('-a', '--arg', nargs='+', type=int)def main(args):    print argsparser = argh.ArghParser()parser.add_commands([main])parser.dispatch()

Example output:

$ python test.py main -a 1 2 3Namespace(arg=[1, 2, 3], function=<function main at 0x.......>)


I order to have access to each parameter value, the following code may be helpful.

import argparseparser = argparse.ArgumentParser()parser.add_argument('-a', '--arg', nargs='+', type=int)args = vars(parser.parse_args())print "first parameter:" + str(args["arg"][0])print "second parameter:" + str(args["arg"][1])print "third parameter:" + str(args["arg"][2])