Options de ligne de commande avec des arguments optionnels en Python
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.
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 .