Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python argparse: arg with no flag

i've the following code:

parser.add_argument('file', help='file to test')
parser.add_argument('-revs', help='range of versions', nargs='+', default=False)

Is there a way to not use the flag -revs when use it, like this:

./somescript.py settings.json 1 2 3 4
like image 543
Marco Herrarte Avatar asked May 20 '14 17:05

Marco Herrarte


1 Answers

Yes.

You have multiple solutions:

  • As Mrav mentioned, you can use the system argument (sys.argv[0...])
  • Or use argparse. From the documentation (which is python3 compliant), you can do this way:

    if __name__ == '__main__':
        parser = ArgumentParser()
        parser.add_argument('file')
        parser.add_argument('revs', metavar='N', type=int, nargs='+', help='revisions')
        res = parser.parse_args()
        pprint(res)
    

And you can see the result:

$ ./test.py  settings.json 1 2 3
Namespace(file='settings.json', revs=[1, 2, 3])
like image 162
FlogFR Avatar answered Oct 10 '22 03:10

FlogFR