Comment utiliser getopt / OPTARG en Python? Comment passer des arguments si trop d'arguments (9)?

comment utiliser getopt / optarg en Python?

25
demandé sur Mandar Pande 2011-06-17 11:44:04

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.

45
répondu Makis 2015-10-26 23:36:29

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.

13
répondu brice 2011-06-17 07:53:22

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.')
4
répondu iceaway 2011-06-17 07:56:57