Zhentao Li's Homepage

email:zl zli2 com

 // home


Initiation à la programmation

Les modules

Modules

  • On peut ranger les définitions de fonctions se rapportant à une même application au sein d’un script commun baptisé red module.

  • Un module est sauvegardé sous forme d’un fichier dont le nom a la forme <nom du module>.py.

  • Pour utiliser un module, il faut se servir de l’instruction import <nom du module>.

  • L’exécution de cette instruction consiste à exécuter le script définissant le module (ce script peut contenir des instructions autres que des définitions de fonctions).

  • Pour importer un module, Python a besoin de connaître le chemin qui permet d’accéder au fichier correspondant. Ce chemin doit apparaître dans la liste des chemins possibles stockés dans la variable path du module sys.

Modules - Première méthode d’importation

>>> import random
>>> random.randint(0, 10)
9

Regardons de plus près cet exemple :

  • L’instruction import vous permet d’importer toutes les fonctions du module random

  • Ensuite, nous utilisons la fonction randint(a, b) du module random. Cette fonction renvoie un nombre entier aléatoirement entre a inclus et b inclus.

Modules - Deuxième méthode d’importation

  • Pour disposer d’une fonction du module:

    >>> from random import randint
    >>> random.randint(0, 10)
    9
  • Pour disposer de toutes les fonctions d’un module:

    from math import *
    racine = sqrt(49)
    angle = pi/6
    print sin(angle)

    Visualiser l'exécution

    Normalement, from module import * est seulement utilisé dans l'interpréteur et déconseillé dans les scripts. C'est pour aider le lecteur à trouver la provenance des variables et fonctions du programme.

Modules courants

  • math : fonctions et constantes mathématiques de base (sin, cos, exp, pi...).

  • sys : passage d’arguments, gestion de l’entrée/sortie standard etc...

  • os : dialogue avec le système d’exploitation.

  • random : génération de nombres aléatoires.

  • time : permet d’accéder aux fonctions gérant le temps.

  • profile : permet d’évaluer le temps d’exécution de chaque fonction dans un programme (profiling en anglais).

  • urllib : permet de récupérer des données sur internet depuis python.

  • Tkinter : interface python avec Tk (permet de créer des objets graphiques; nécessite d’installer Tk).

  • re : gestion des expressions régulières.

  • pickle : écriture et lecture de structures python (comme les dictionnaires par exemple).

  • fraction : pour des calculs avec fractions exactes.

  • ...

Quelques fonctions des modules courants

>>> math.pow(2,10)   #Exposant
1024.0
>>> code_retour = os.system("echo 123")  #Executer une commande externe
123
>>> random.randint(0, 10)  #Choisis un entier au hasard
2
>>> random.choice(["a", "b", 3, "d"])  #Choisis un element d'une liste
'd'
>>> time.time()  # Nombre de secondes depuis 1970-01-01
1393935277.116552
>>> time.sleep(3)  # Attendre 3 seconds
>>> profile.run("time.sleep(3)")  # Calcule le temps d'excution
         4 function calls in 0.000 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.000    0.000 :0(setprofile)
        1    0.000    0.000    0.000    0.000 :0(sleep)
[...]

Quelques fonctions des modules courants

>>> handle = urllib.urlopen("http://www.google.com")
>>> html = handle.read()  # Lire le contenu d'une page comme un fichier (que nous allons voir prochainement)
>>> print html
'<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage">
<head><meta itemprop="image" content="/images/google_favicon_128.png"><ti
tle>Google</title><script>(function(){\nwindow.google={kEI:"i8QVU8ejFqTt4
gTBvIDIAw",getEI:function(a){for(var b;a&&(!a.getAttribute||!(b=a.getAttr
[...]
>>> # Recherche des chaines de caractere dans un texte.
>>> # Dans cet exemple, on trouve les liens sur la page web'.
>>> re.findall('href="(.*?)"', html)
['/search?', 'http://www.google.fr/imghp?hl=fr&tab=wi', 'http://maps.
google.fr/maps?hl=fr&tab=wl', 'https://play.google.com/?hl=fr&tab=w8',
'http://www.youtube.com/?gl=FR&tab=w1', 'http://news.google.fr/nwshp?
[...]
>>> # Sauvegarde de variables dans des fichiers et lecture
>>> pickle.dump(liste, open("sauvegarde.pkl", "w"))
>>> listelue = pickle.load(open("sauvegarde.pkl"))
>>> listelue
['a', 'b', 'c']

Télécharger ces exemples dans un script

Obtenir de l’aide

  • Pour obtenir de l’aide sur un module rien de plus simple, il suffit d’invoquer la commande help :

    >>> import random
    >>> help(random)
  • Il est aussi possible d’invoquer de l’aide sur une fonction particulière d’un module en la précisant de la manière suivante :

    >>> help(random.randint)
  • Ça marche même sur des variables et des types.

    >>> liste = [10, 20]
    >>> help(liste)
    >>> help(str)

Les fichiers

Fichiers: utilisation courante

$ cat exemple.txt 
Ceci est la premiere ligne
Ceci est la deuxieme ligne
Ceci est la troisieme ligne
Ceci est la quatrieme et derniere ligne
>>> nom_fichier = "exemple.txt"
>>> contenu_fichier = open(nom_fichier).read()
>>> contenu_fichier
'Ceci est la premiere ligne\nCeci est la deuxieme ligne\nCeci est la
troisieme ligne\nCeci est la quatrieme et derniere ligne\n'
>>> contenu_a_ecrire = "hello world\n"
>>> open("exemple2.txt", "w").write(contenu_a_ecrire)

$ cat exemple2.txt
hello world

Autre exemple

Créez un fichier dans un éditeur de texte que vous sauverez dans votre répertoire avec le nom exemple.txt, par exemple :

Ceci est la premiere ligne
Ceci est la deuxieme ligne
Ceci est la troisieme ligne
Ceci est la quatrieme et derniere ligne

Exemple readlines

>>> file_in = open('exemple.txt','r')
>>> file_in
<open file 'exemple.txt', mode 'r' at 0x40155b20>
>>> lignes = file_in.readlines()
>>> lignes
['Ceci est la premiere ligne\n', 'Ceci est la deuxieme ligne\n', 
'Ceci est la troisieme ligne\n', 'Ceci est la quatrieme et derniere ligne\n']
>>> for i in lignes:
...   print i
...
Ceci est la premiere ligne
 
Ceci est la deuxieme ligne
 
Ceci est la troisieme ligne
 
Ceci est la quatrieme et derniere ligne
>>> file_in.close()
>>> file_in
<closed file 'exemple.txt', mode 'r' at 0x40155b20>
>>> file_in.close()

Exemple read

Ceci est la premiere ligne
Ceci est la deuxieme ligne
Ceci est la troisieme ligne
Ceci est la quatrieme et derniere ligne
>>> file_in = open("exemple.txt", "r")
>>> file_in.read()
'Ceci est la premiere ligne\nCeci est la deuxieme ligne\nCeci est la troisieme ligne\nCeci est la quatrieme et derniere ligne\n'
>>> file_in.close()

Exemple tell

Ceci est la premiere ligne
Ceci est la deuxieme ligne
Ceci est la troisieme ligne
Ceci est la quatrieme et derniere ligne
>>> file_in = open("exemple.txt", "r")
>>> file_in.tell()
0L
>>> file_in.readline()
'Ceci est la premiere ligne\n'
>>> file_in.tell()
27L
>>> file_in.seek(0)
>>> file_in.tell()
0L
>>> file_in.readline()
'Ceci est la premiere ligne\n'
>>> file_in.close()

Exemple write

>>> animaux = ['girafe', 'hippopotame', 'singe', 'dahu' , 'ornithorynque']
>>> file_out = open('exemple2.txt','w')
>>> for i in animaux:
...   file_out.write(i)
...
>>> file_out.close()
>>>
$ cat exemple2.txt
girafehippopotamesingedahuornithorynque
$

Utilisation de fichiers

  • Il est important de dissocier les données des programmes qui les utilisent en rangeant ces données dans des fichiers séparés.

  • Pour utiliser un fichier dans Python, il faut commencer par l’ouvrir

    ce qui retourne un objet de type file.

  • Le paramètre facultatif <mode> indique le mode d’ouverture du fichier :

    • r : mode lecture (le fichier doit exister préalablement)

    • w : mode écriture (si le fichier existe, les données sont écrasées, sinon le fichier est créé)

    • a : mode ajout (si le fichier existe, les données écrites vont l’être après celles existantes, sinon le fichier est créé)

  • Si le mode est omis, le mode par défaut est r.

Utilisation de fichiers

  • un objet de type file est associé à des attributs et des méthodes. En voici quelques-unes :

    • read([<n>]) : Retourne la chaîne des <n> caractères restants.

    • write(<ch>) : Ecrit la chaîne de caractères <ch>.

    • close() : Ferme le fichier quand il est fini d’être utilisé.

    • seek(<n>) : Choisit le caractère <n> comme position courante du fichier.

    • tell(): Retourne le caractère en position courante.


Website design modified from Sliqua taken from OSWD