script python en

Creation: 25 juin 2013
Mise à jour:
Version: 1.0
Author: Jean-Louis Bicquelet-Salaün
Location: http://jlbicquelet.free.fr
Copyright: (c) 2013 Jean-Louis BICQUELET-SALAÜN

template script python en mode console

Le script qui suit dirlist.py est un script qui présente une manière de gérer les arguments en python et de documenter un script en mode console.

On pourrait aussi utiliser les docstrings, mais pour avoir un exemple simple, je suis allé à l'essentiel et à programmation qui pourrait être commune avec d'autres langages de script comme shell ou perl.

source

voici le script complet:

#!/usr/bin/python

# note1

import os,sys import getopt

# note2
def help(): print """ usage : dr [-r repertoire ] [-s] dr [--rep repertoire ] [--sort] dr [ -h ] [--help] dr [ -m ] [--man]

affiche les fichiers contenus dans un repertoire """ sys.exit()

def man(): print """ NAME dr SYNOPSIS dr [-r repertoire ] [-s] dr [--rep repertoire ] [--sort] dr [ -h ] [--help] dr [ -m ] [--man]

OPTIONS

-r, --rep specifie un repertoire -s, --sort trie les fichiers par ordre alphabetique -h, --help donne de l'aide -m, --man presente la page man

SAMPLES

affiche le repertoire courrant

dr

affiche le repertoire python trie

dr --rep d:\python -s

AUTHOR Jean-Louis Bicquelet-Salaün (c) 2003

VERSION 1.0

DATE 01/09/2003 """ # note3
sys.exit()

# note4
def dirlst(rep,sort='oui'): """ retourne une liste des fichiers contenus dans un répertoire eventuellement trie si le deuxieme parametre est 'oui'

exemple :

noms = dirlst('.','oui') for n in noms: if n[0] !='.': print n """

noms=os.listdir(rep) if sort=='oui': noms.sort() return noms

# note5
def main(): try: opts,args=getopt.getopt(sys.argv[1:],"hmsr:",["help","man","sort","rep="]) except getopt.GetoptError: help() sys.exit(2)

rep='.' sort = 'non' for o,a in opts: if o== "-v": verbose = True if o in ("-h","--help"): help() if o in ("-m","--man"): man() if o in ("-s","--sort"): sort='oui' if o in ("-r","--rep"): rep=a

print rep,sort n = dirlst(rep,sort) for i in n: print i

# note6
if name == ' main ': main()

explications

  1. On importe les principaux modules, os et sys, mais surtout le module getopt qui va permettre d'analyserla ligne de commande.
  2. La fonction help est un modèle type d'affichage d'aide. On commence par un print suivi de """ et l'aidese termine par """. Entre les deux on met l'aide que l'on veut. La fonction affichera tel quel le texte.

    print """
    usage : dr [-r repertoire ] [-s]
    	dr [--rep repertoire ] [--sort]
    	dr [ -h ] [--help]
    	dr [ -m ] [--man]
    

    affiche les fichiers contenus dans un repertoire """

    La fonction man qui suit donne un modèle avec une structure en forme de manpage.

  3. La fonction sys.exit() permet de sortir du programme. La valeur entre crochet permet de retourner une valeur, ce quipermet de gérer des codes d'erreurs.
  4. La fonction dirlist proprement dite.

    Celle-ci est définie comme suit :

     def dirlst(rep,sort='oui'):  
    .
    • rep correspond au nom du répertoire à lister.
    • sort indique si la liste est triée ou non. On remarquera que par défaut cette liste est triée. sort='oui'

    Cette fonction a une valeur docstring définie. C'est à dire que la ligne qui suit sa définition commence par ''' ou """et se termine plus loin par ces mêmes valeurs.

    Cela permet de commenter le code python. Ceci peut se faire au niveau d'une fonction comme ici, d'une classe ou d'un module.

    Pour extraire la documentation, il suffit de taper le nom de la fonction, de la classe ou du module suivi de:

  5. La fonction main appelle la fonction getopt.getopt. Celle-ci sert à analyser la ligne d'arguments passés au script.
    try:
       opts,args=getopt.getopt(sys.argv[1:],"hmsr:",["help","man","sort","rep="])
     except getopt.GetoptError:
       help()
       sys.exit(2)
     
    Le deuxième argument (ici "hmsr") correspond aux paramêtres courts.
    Le troisième argument contient la liste des arguments avec des noms longs.

  6. tout programme indépendant doit contenir cette ligne:

    if   name   == '  main  ': 

    Python sait alors que le fichier python n'est pas un simple module et peut être indépendant.

    Dans notre cas, si il est appelé seul et non pas chargé comme module, la fonction main va être appelé. On peut bien sur changer le nomde cette fonction, pourvu que celle-ci existe dans le script.

  7. téléchargement

    Vous pouvez télécharger librement ce script

    dirlist.py