Comment utiliser getopt / OPTARG en Python? Comment passer des arguments si trop d'arguments (9)?
3 réponses
Ceci est un exemple de la façon dont je le fais, j'ai l'habitude d'utiliser 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 une limite de 9 Paramètres.
une recherche sur google aurait été utile. Jetez un oeil à l' getopt et argparse modules 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)
puis lancez-le 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 la max des entiers de ligne de commande:
$ prog.py 1 2 3 4
4
$ prog.py 1 2 3 4 --sum
10
ceci vient directement de la bibliothèque standard.
avez-vous essayé de lire les docs 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 arguments de changement? Si vous voulez vérifier que l'utilisateur n'utilise pas plus de 9 arguments, vous pouvez vérifier la durée de l' sys.argv
liste, qui contient toutes les options/arguments passés au script. Le premier élément est le nom du script qui est invoqué, de sorte que la longueur est toujours au moins 1. Vous pourriez faire quelque chose comme:
if len(sys.argv) > 10
print('Too many arguments.')