Question

Je me demandais s'il y a un moyen simple pour analyser les options de ligne de commande ayant des arguments optionnels en Python. Par exemple, je voudrais être en mesure d'appeler un script de deux façons:

> script.py --foo
> script.py --foo=bar

A partir de la documentation de Python Getopt il semble que je dois choisir l'un ou l'autre.

Était-ce utile?

La solution

module optparse de stdlib ne le supporte pas hors de la boîte (et il ne devrait pas en raison de c'est une mauvaise pratique d'utiliser les options de ligne de commande de telle manière).

Corne a souligné @ Kevin vous pouvez utiliser le module de argparse (installable via easy_install argparse ou tout simplement saisir argparse.py et le mettre partout dans votre sys.path).

Exemple

#!/usr/bin/env python
from argparse import ArgumentParser

if __name__ == "__main__":
    parser = ArgumentParser(prog='script.py')
    parser.add_argument('--foo', nargs='?', metavar='bar', default='baz')

    parser.print_usage()    
    for args in ([], ['--foo'], ['--foo', 'bar']):
        print "$ %s %s -> foo=%s" % (
            parser.prog, ' '.join(args).ljust(9), parser.parse_args(args).foo)

Sortie

usage: script.py [-h] [--foo [bar]]
$ script.py           -> foo=baz
$ script.py --foo     -> foo=None
$ script.py --foo bar -> foo=bar

Autres conseils

Notez également que la bibliothèque standard a également optparse , une des options plus puissantes analyseur.

vérifier argparse: http://code.google.com/p/argparse/

en particulier l'option '' nargs

Il n'y a pas une option optparse qui vous permet de le faire. Mais vous pouvez l'étendre à le faire:

http://docs.python.org/library/optparse .html # en ajoutant-nouvelles-actions

Utilisez le paquet optparse .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top