[Accueil] - [Plan du site] - [Rechercher] - [ C O L R T S P ]  

 
Gestion des options pour la ligne de commande en python
 

par nojhan le 23 mai 2008

Il n’est pas évident de trouver une manière simple de gérer les paramètres passés à un script. Comme il existe un nombre incalculable de modules pour ce faire, j’ai évidemment fait le mien, car la gestion des options est visiblement affaire de goûts.

Ce que je propose s’appuie sur le module getopt, qui parse la ligne de commande, mais dont l’API est à chier (pour dire les choses clairement).

Mon idée de départ était de faire quelque chose de simple à utiliser, même si le prix à payer est le manque d’une certaine flexibilité.

Par défaut, le système utilise le module ConfigParser pour gérer des fichiers de configurations. Le nom du fichier de configuration utilisé est le nom de l’application (sans le .py, au besoin). La priorité est donné 1) à la ligne de commande, 2) au fichier /.application.conf, 3) au fichier ./application.conf. Les clefs sont les noms longs des options définies. Il y a un petit manque de gestion élégante des sections...

Une version (peut-être plus à jour) est utilisé par le logiciel Strip-It, dans le fichier stripit.py.

Utilisation

if __name__=="__main__" :

# description générale usage = """Aide à l’export et au téléchargement pour StripIt. \tCe script va exporter un ou plusieurs fichiers SVG au format PNG, en préservant les métadonnées ; \tpuis télécharger le tout sur un serveur FTP."""

# l’objet qui va tout gérer

oo = Options( sys.argv, usage )

# déclaration des différentes options # courte longue description valeur par défaut (ou false si ne prend pas de paramètre) oo.add( ’u’, ’user’, ’Login FTP’, ’anonymous’ ) oo.add( ’P’, ’pass’, ’Mot de passe FTP’, ’’ ) oo.add( ’v’, ’verbose’, "Afficher plus d’informations", False ) oo.add( ’h’, ’help’, "Ce message d’aide", False )

# cuisine interne

args = oo.parse()

# on vérifie la valeur de l’option if oo.get(’verbose’) : # affiche l’état des différents paramètres et la provenance de leur configuration oo.print_state()

if oo.get(’help’) : # le message d’aide

oo.print_usage() sys.exit()

# parcours les arguments (= ce qui est passé en ligne de commande sans être une option) while args : f = args.pop()

if oo.get(’verbose’) : print "Processing %s :" % os.path.basename( f )


Téléchargements


Commentaires

Articles populaires

[Accueil] - [Plan du site] - [Rechercher] - [Admin.]       SPIP:Squelette