Les modules

Les modules sont des fichiers qui regroupent des ensembles de fonctions.

Modules

Il existe un grand nombre de modules préprogrammés qui sont fournis d’office avec Python. Vous pouvez en trouver d’autres chez divers fournisseurs. Souvent on essaie de regrouper dans un même module des ensembles de fonctions apparentées, que l’on appelle des bibliothèques.

  • math : fonctions et constantes mathématiques.
  • random : permet de générer des nombres aléatoires.
  • tkinter : fonctions pour construire une interface graphique.
  • time : fonctions destinées à gérer le temps ;
  • PIL: fonctions pour les images.
  • os : fonctions pour les fichiers et dossiers.
  • csv : lecture de fichiers de données
  • csv : lecture de fichiers de données
  • Installer les modules :

    Certains modules ne sont pas fournis par défaut avec l’installation de logiciel Python. Pour cela il faut sous Windows ouvrir l’invite de commandes :

    _images/image46.png

    Cet écran s’affiche :

    _images/image47.png

    _images/image48.png

    _images/image49.png

    _images/image50.png

    .

    Le module os :

    .

    Ce module sert à manipuler les fichiers et les répertoires, il permet de se déplacer dans le répertoire où se situe le fichier python, il permet de créer des répertoires de les supprimer et d’exécuter des commandes.

    Fonction Valeur de retour
    getcwd()
    
    fournit le répertoire courant
    chdir(repertoire)
    
    se place dans le répertoire repertoire
    rename(avant ,apres)
    
    renomme avant en apres.
    remove(dossier), rmdir(dossier)
    
    supprime dossier
    mkdir(dossier)
    
    crée le répertoire dossier.
    listdir(dossier)
    
    liste des fichiers du repertoire /dossier
    system(commande)
    
    exécute la commande commande dans l’invite de commande.

    .

    programme Résultat

    # 0801 os.py

    from os import*

    #nom du repertoire où l'on se situe

    repertoire=getcwd()

    print(repertoire)

    #construction de la liste des fichiers du répertoire

    liste_fichiers =listdir(repertoire)

    for i in range(len(liste_fichiers)):

        print(liste_fichiers[i])

    repertoire1=input(" Donner le répertoire à explorer : ")

    chdir(repertoire+'/'+repertoire1)

    #On se place dans un nouveau repertoire

    #et on refait une nouvelle liste de fichiers

    liste_fichiers =listdir(repertoire)

    print('type',type(liste_fichiers))

    for i in range(len(liste_fichiers)):

        print(liste_fichiers[i])

    dossier=getcwd()

    print(" On est dans le dossier :"+dossier)

    #utilisation de system

    print(" Ouverture de l'invite de commandes ")

    system('cmd |type *.txt')

    # création d'un nouveau dossier

    print(listdir(dossier))

    print("Création d'un nouveau dossier : ")

    mkdir('nouveau dossier')

    print(listdir(dossier))

    _images/image174.png

    .

    DEFINITION :

    .

    Math :

    Le module math, par exemple, contient les définitions de nombreuses fonctions mathématiques telles que sinus, cosinus, tangente, racine carrée, etc. Pour pouvoir utiliser ces fonctions, il vous suffit d’incorporer la ligne suivante au début de votre script :

    from math import
    

    Cette ligne indique à Python qu’il lui faut inclure dans le programme courant toutes les fonctions (c’est la signification du symbole « joker » * ) du module math, lequel contient une bibliothèque de fonctions mathématiques préprogrammées.

    Voici le début du module math : (à taper dans le shell)
    >>> help("math")
    
    LISTE FONCTIONS :

    Description module math

    Fonction Valeur de retour
    acos(x)
    
    en radians
    acosh(x)
    
    Argument cosinus hyperbolique (Arg ch)
    asin(x)
    
    en radians
    asinh(x)
    
    Argument sinus hyperbolique (Arg sh
    atan(x)
    
    en radians
    atan2(y, x)
    
    Retourne la tangente d’arc (mesuré en radians) de y / x, à la différence atan (y / x), les signes de x et y sont pris en compte.
    atanh(x)
    
    Argument tangente hyperbolique (Arg th)
    ceil(x)
    
    si alors
    cos(x)
    
    x en radians
    cosh(x)
    
    Cosinus hyperbolique
    degrees(x)
    
    Convertit les radians en degrés
    exp(x)
    
    Exponentielle
    abs(x)
    
    Valeur absolue
    factorial(x
    
    Factorielle
    floor(x)
    
    Partie entière de x
    hypot(x, y)
    
     
    log(x[, base])
    
    Retour le logarithme de x à la base donnée.  Si la base est non spécifiée, retourne le logarithme naturel (base e) de x.
    log10(x)
    
    Logarithme en base 10 de x
    modf(x)
    
    si
    pow(x, y)
    
    x exposant y
    radians(x)
    
    Convertit x de degrés en radians.
    sin(x)
    
    x en radians
    sinh(x)
    
    Sinus hyperbolique
    sqrt(x)
    
    Racine carré
    tan(x)
    
    x en radians
    tanh (x)
    
    Tangente hyperbolique
    les constantes: e = 2.718281828459045; pi = 3.141592653589793
    

    .

    RANDOM :

    .

    Le module random :

    Dans le module random :

    Module de 540 lignes

    random(): nombre décimal aléatoire compris entre 0 et 1.

    randrange(\(\mathbf{0,n}\)) :nombre entier aléatoire \(\{ 0\ ;1\ ;\ldots.\ ;\left( n - 1 \right)\}\) ;

    \(n\) n’est pas un résultat de cette fonction

    .

    DEFINITION :

    .

    CSV : Comma Separated Values.

    Ce module permet de lire un fichier de tableur avec csv.reader ou de l’écrire avec csv.writer.

    On utilisera que la classe csv.reader .

    Car pour créer des fichiers CSV, les tableurs sont plus efficaces. Ces fichiers peuvent être fabriqués par des tableurs il suffit de choisir la bonne option « en enregistrant sous » ils produisent des lignes de données séparées soit par des virgules, des points virgules soit par des doubles quottes. Ils sont utilisés pour stocker des données.

    Et pour les projets de l’enseignement facultatif : Informatique et Création Numérique : pour étudier l’évolution d’un territoire, en économie, étudier la répartition d’un indicateur économique.

    L’utilisation de ces fichiers permet de créer des cartes, des figures et de traiter toutes sortes de données.

    Les données sont extraites en deux sortes de format : les listes ou les dictionnaires. Les exemples suivants illustrent la différence de ces types de données.

    .

    FONCTIONS :

    .

    Fonctions des fichiers csv :

    Ouverture d’un fichier :

    fichier=open(f.csv,"r")
    

    Fermeture d’un fichier:

    fichier.close()
    

    Lecture d’un fichier et données extraites en format liste :

    liste\_csv=csv.reader(fichier,delimiter=";")
    liste\_csv=csv.reader(fichier,delimiter=",")
    
    for ligne in liste\_csv : #ligne est une liste.
    
    print(ligne)
    

    delimiter

    delimiter indique le symbole de séparation des données, si l’on doit utiliser des nombres décimaux(float) il faut utiliser la commande

    delimiter=";"
    
    pour éviter tout mélange dans les données.
    

    .

    OUVERTURE :

    .

    Lecture d’un fichier et données extraites en format dictionnaire :

    dict\_csv = csv.DictReader(fichier,delimiter=";")
    dict\_csv = csv.DictReader(fichier,delimiter=",")
    for ligne in dict\_cvs:
        print(ligne)
    
    #ligne est un {"clé" :"valeur"} du dictionnaire.
    

    Si c’est un tuple :

    {"clé1" :"valeur1","clé2" :"valeur2", "..." :"..." }
    

    .

    LISTE :

    .

    .

    Structure de liste:

    Code Fichier CSV

    #0802 affichage csv.py

    import csv

    from tkinter import*

    def creerfenetre(fenetre,titre,taille):

            "modifie une fenêtre"

            fenetre.title(titre)

            fenetre.geometry(taille)

            return fenetre

    def afficher_csv( nom_fichier_csv,t_fenetre ,lct):

          fichier = open(nom_fichier_csv,"r")

          csv_p_v = csv.reader( fichier,delimiter=";")

          #csv_v = csv.reader( fichier,delimiter=",")

          for ligne in csv_p_v:

                print(ligne)

                texte = "  "

                #lecture de chaque ligne

                for i in range(len(ligne)):

                      donnees=ligne[i]#acquisition de chaque colonne

                      l_c=lct#nombre de caractères affichés par colonne

                      if i==2 and nom_fichier_csv=="europe.csv":

                            donnees=ligne[i]+"  millions"

                            l_c=25

                      long_t=len(donnees)

                      diff=l_c-long_t

                      texte = texte + "│"+ donnees+diff*" "

                t_fenetre.insert(END,texte+'│\n')

          t_fenetre.insert(END,"  "+len(texte)*'_'+'\n')

          fichier.close()

     

    largeur,hauteur=650,320

    fenetre=Tk()

    taille,titre=str(largeur)+"x"+str(hauteur),"CSV"

    creerfenetre(fenetre,titre,taille)

    can=Canvas(fenetre,width=largeur,height=hauteur,bg="white")

    t_fenetre=Text(fenetre,width=largeur,height=hauteur,bg="white")

    t_fenetre.grid(row=0,column=0)

    afficher_csv('europe.csv',t_fenetre,15)

    fenetre.mainloop()

    ['Nom', 'capitale', 'population', 'superficie']

    ['France', 'Paris', '67', '623834']

    ['Espagne', 'Madrid', '46', '505991']

    ['Italie', 'Rome', '60', '302073']

    ['Allemagne', 'Berlin', '82', '357021']

    ['Royaume uni', 'Londres', '65', '248528']

    ['Belgique', 'Bruxelles', '11', '30528']

    []

    Chaque ligne est une liste, et toutes les valeurs sont des chaînes de caractères.

    _images/image184.png

    .

    DICTIONNAIRE :

    .

    Structure de dictionnaire:

    Différence entre liste et dictionnaire :

    Avec le même fichier CVS, on obtient deux types de données : les listes ou un dictionnaire.

    Le choix de du type de données dépend de l’utilisation que l’on veut faire de ces données.

    Cet exemple est un fichier qui ne contient que des données simples, c’est à dire chaque colonne ne contient qu’une donnée. On peut utiliser les deux types : liste ou dictionnaire.

    Fichier de données :

    Le résultat donne l’illustration des types de données :

    Utilisation des données du fichier CSV pour construire des figures :

    Les fichiers CSV permettent la visualisation et la représentation graphiques de données, il s’agit de représenter graphiquement des données chiffrées. L’exemple suivant utilise le module tkinter, mais la plupart du temps on utilise le module bokeh.

    Exemple :

    .

    Code Dessins CSV

    #0804 dessins csv.py

    import csv

    from tkinter import*

    def creerfenetre(fenetre,titre,taille):

            "modifie une fenêtre"

            fenetre.title(titre)

            fenetre.geometry(taille)

            return fenetre

    def dessine_csv(can):

          """Ouvre le fichier csv et dessine dans le canevas les figures"""

          ft='verdana 12 bold'

          with open("figure.csv") as fichier_cvs:

                lecture=csv.DictReader(fichier_cvs,delimiter=";")

                for ligne in lecture:

                      donnees=ligne["polygone"]

                      #split transforme une chaîne de caractères en une liste

                      d=donnees.split(',')#  voir chapitre types de données

                      figure=ligne['figure']

                      coord=ligne['polygone']

                      couleur=ligne['couleur']

                     

                      x1,y1,x2,y2=int(d[0]),int(d[1]),int(d[2]),int(d[3])

                      xi,yi=int((x1+x2)/2),int((y1+y2)/2)

                      if figure=='polygone' :

                            can.create_polygon(d,fill=couleur)

                            can.create_text(xi+20,yi+100,text=pays,font=ft)

                      if figure=='triangle' :

                            can.create_polygon(d,fill=couleur)

                            can.create_text(xi+20,yi+100,text=figure,font=ft)

                      if figure=='rectangle':

                            can.create_rectangle(d,fill=couleur)

                            can.create_text(xi,yi,text=figure,font=ft)

                      if figure=='cercle' or figure=='ellipse':

                            can.create_oval(d,fill=couleur)

                            can.create_text(xi,yi,text=figure,font=ft)

          fichier_cvs.close()

    #---------------------------------------#

    largeur,hauteur=1000,640

    fenetre=Tk()

    taille=str(largeur)+"x"+str(hauteur)

    titre="Dessins CSV"

    creerfenetre(fenetre,titre,taille)

    can=Canvas(fenetre,width=largeur,height=hauteur,bg="white")

    can.grid(row=0,column=0)

    dessine_csv(can)

    fenetre.mainloop()

    _images/image189.png