Comment utiliser getopt/optarg en Python?
Ceci est un exemple de la façon dont je le fais, j'utilise généralement le même modèle de base:
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)
Je ne pense pas qu'il y ait de limite de 9 paramètres.
Une recherche Google aurait aidé. Jetez un œil aux modules getopt et argparse dans la bibliothèque standard:
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)
Exécutez-le ensuite comme prévu:
$ 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)
Lorsqu'il est exécuté avec les arguments appropriés, il affiche la somme ou le maximum des entiers de ligne de commande:
$ prog.py 1 2 3 4
4
$ prog.py 1 2 3 4 --sum
10
C'est directement de la bibliothèque standard.
Avez-vous essayé de lire les documents python pour le module getopt
( http://docs.python.org/library/getopt.html?highlight=getopt# module-getopt )? Il fournit un exemple simple de la façon dont le getopt
est utilisé. Que voulez-vous dire par des arguments de décalage? Si vous voulez vérifier que l'utilisateur n'utilise pas plus de 9 arguments, vous peut vérifier la longueur du sys.argv
list, qui contient toutes les options/arguments passés au script. Le premier élément est le nom du script qui est invoqué, donc la longueur est toujours au moins 1. Vous pouvez faire quelque chose comme:
if len(sys.argv) > 10
print('Too many arguments.')