How to use getopt/optarg in Python?
3 Answers
This is an example of how I do it, I usually use the same basic template:
import sys
import getopt
try:
opts, args = getopt.getopt(sys.argv[1:], 'm:p:h', ['miner=', 'params=', 'help'])
except getopt.GetoptError:
usage()
sys.exit(2)
for opt, arg in opts:
if opt in ('-h', '--help'):
usage()
sys.exit(2)
elif opt in ('-m', '--miner'):
miner_name = arg
elif opt in ('-p', '--params'):
params = arg
else:
usage()
sys.exit(2)
I don't think there is any 9 parameter limit.
-
3"argv" needs to be "sys.argv" – eludom Mar 30 '15 at 13:39
-
3You need to slice off the script name from the `argv` array like: arvg[1:] for this line to work: `opts, args = getopt.getopt(argv[1:], 'm:p:h', ['miner=', 'params=', 'help'])` – Botond Balázs Apr 14 '15 at 09:32
-
3what usage() function used to ? – nurulhudamustaqim Aug 07 '16 at 21:15
A google search would have helped. Have a look at the getopt and argparse modules in the standard library:
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print args.accumulate(args.integers)
Then run it as expected:
$ prog.py -h
usage: prog.py [-h] [--sum] N [N ...]
Process some integers.
positional arguments:
N an integer for the accumulator
optional arguments:
-h, --help show this help message and exit
--sum sum the integers (default: find the max)
When run with the appropriate arguments, it prints either the sum or the max of the command-line integers:
$ prog.py 1 2 3 4
4
$ prog.py 1 2 3 4 --sum
10
This is straight from the standard library.

- 24,329
- 7
- 79
- 95
-
-
Sorry for the add but I would suggest you have a look for `docopt` before diving into `argparse`... – flaschbier Mar 23 '17 at 11:56
Have you tried reading the python docs for the module getopt
(http://docs.python.org/library/getopt.html?highlight=getopt#module-getopt)? It provides a simple example of how the getopt
is used. What do you mean by shift arguments? If you want to check that the user does not use more than 9 arguments, you can check the length of the sys.argv
list, which contains all the options/arguments passed to the script. The first element is the name of the script which is invoked, so the length is always at least 1. You could do something like:
if len(sys.argv) > 10
print('Too many arguments.')

- 1,204
- 1
- 8
- 12