About

Swaroop C H is 27 years of age. He graduated in B.E. (Computer Science) from PESIT, Bangalore, India. He has previously worked at Yahoo! and Adobe.

More about

Page
Personal tools
COLLECTION
Collection

Python fr:Librairie Standard

From Notes

Jump to: navigation, search

Contents

[edit] Introduction

La libraire Python standard contient de très nombreux modules et fait partie de l'installation standard de Python. Il est important de se familiariser avec la Librairie Standard Python, car cela permet de résoudre rapidement de nombreux problèmes si vous savez ce que ces librairies peuvent faire.

Nous étudierons quelques modules couramment utilisés dans cette librarie. Vous pouvez trouver tous les détails pour tous les modules de la Librairie Standard Python dans la section 'Library Reference' de la documentation qui vient avec votre installation de Python.

Etudions quelques modules utiles.

Note
Si vous trouvez trop difficiles les sujets de ce chapitre, je vous conseille de passer au suivant. Cependant, je vous recommande de revenir ensuite à ce chapitre quand vous serez plus à l'aise en programmation Python.

[edit] Le Module Sys

Le module sys contient des fonctionnalités spécifiques au système. Nous avons déjà vu que la liste sys.argv contient les arguments passés en ligne de commande.

Supposons que nous voulions tester la version de Python, pour vérifier que nous utilisons une version supérieure ou égale à la version 3. Le module sys nous offre cette fonctionnalité.

>>> import sys
>>> sys.version_info
(3, 0, 0, 'beta', 2)
>>> sys.version_info[0] >= 3
True

Comment cela fonctionne :

Le module sys possède un tuple version_info qui nous informe sur la version. La première entrée est la version majeure. Nous pouvons ainsi vérifier, par exemple, que le programme fonctionne avec au moins Python 3.0:

#!/usr/bin/python
# Nom de fichier : versioncheck.py
import sys, warnings
if sys.version_info[0] < 3:
    warnings.warn("Python 3.0 est requis pour ce programme.",
        RuntimeWarning)
else:
    print('Tout est normal')

Résultat :

   $ python2.5 versioncheck.py
   versioncheck.py:6: RuntimeWarning: Python 3.0 est requis pour ce programme.
     RuntimeWarning)
   
   $ python3 versioncheck.py
   Tout est normal

Comment cela fonctionne :

Nous utilisons un autre module de la librairie standard appelé warnings pour afficher les warnings à l'utilisateur. Si la version majeure de Python n'est pas au moins 3, nous affichons l'avertissement correspondant.

[edit] Le Module Logging

Et si vous voulez avoir quelques messages de debugging ou alors des messages importants stockés quelque part, afin de vérifier que votre programme s'est comporté comme vous l'espériez ? Comment "stocker quelque part" ces messages ? Cela peut être fait avec le module logging .

#!/usr/bin/python
# Nom de fichier : use_logging.py
import os, platform, logging
 
if platform.platform().startswith('Windows'):
    logging_file = os.path.join(os.getenv('HOMEDRIVE'), os.getenv('HOMEPATH'), 'test.log')
else:
    logging_file = os.path.join(os.getenv('HOME'), 'test.log')
 
print("Logging à", logging_file)
 
logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s : %(levelname)s : %(message)s',
    filename = logging_file,
    filemode = 'w',
)
 
logging.debug("début du programme")
logging.info("en train de faire quelque chose")
logging.warning("en train de mourir")

Résultat :

   $python use_logging.py
   Logging à C:\Users\swaroop\test.log

Si nous vérifions le contenu du fichier test.log, il ressemblera à cela :

   2009-09-29 16:44:23,911 : DEBUG : début du programme
   2009-09-29 16:44:23,941 : INFO : en train de faire quelque chose
   2009-09-29 16:44:23,941 : WARNING : en train de mourir

Comment cela fonctionne :

Nous utilisons trois modules de la librairie standard - le module os pour interagir avec le système d'exploitation, le module platform pour des informations sur la plate-forme, c'est-à-dire le système d'exploitation et le module logging pour logger des informations.

D'abord nous vérifions quel système d'exploitation nous utilisons en regardant la chaîne de caractères renvoyée par platform.platform() (pour plus d'informations, voyez import platform; help(platform)). Si c'est Windows, nous en déduisons le disque par défaut, le répertoire par défaut et le nom du fichier où nous stockons l'information . En mettant bout à bout ces trois informations, nous avons l'emplacement complet du fichier. Pour les autres plate-formes, nous avons juste besoin de connaître le répertoire par défaut de l'utilisateur et nous avons l'emplacement complet du fichier.

Nous utilisons la fonction os.path.join() pour concaténer ces trois parties de l'emplacement. Nous utilisons une fonction spéciale plutôt qu'un simple ajout de chaînes de caractères, parce que cette fonction va s'assurer que l'emplacement complet correspond au format attendu par le système d'exploitation.

Nous configurons le module logging pour écrire tous les messages suivant un format particulier dans le fichier prévu.

Enfin, nous écrivons les messages prévus pour le debugging, l'information, les warnings ou même les messages critiques. Après l'exécution du programme, nous pouvons vérifier dans ce fichier et voir ce qui s'est passé, même si aucune information n'a été affichée à l'utilisateur pendant l'exécution du programme.

[edit] Les Modules Urllib Et Json

Et si on écrivait un programme qui va extraire des résultats du web ? Voyons cela maintenant.

Cela peut être fait en utilisant quelques modules. le premier est le module urllib pour aller chercher n'importe quelle page sur Internet. Nous utiliserons Yahoo! Search pour obtenir les résultats de la recherche et en plus, ils nous donne ces résultats dans un format appelé JSON, qui est facile à parser, avec le module json de la librairie standard.

TODO
Ce programme ne marche pas pour l'instant, ils semble qu'il y ait un bug dans Python 3.0 beta 2.
#!/usr/bin/python
# Nom de fichier : yahoo_search.py
 
import sys
if sys.version_info[0] != 3:
    sys.exit('Ce programme a besoin de Python 3.0 ou au-dessus')
 
import json
import urllib, urllib.parse, urllib.request, urllib.response
 
# Obtenez votre propre APP ID à http://developer.yahoo.com/wsregapp/
YAHOO_APP_ID = 'jl22psvV34HELWhdfUJbfDQzlJ2B57KFS_qs4I8D0Wz5U5_yCI1Awv8.lBSfPhwr'
SEARCH_BASE = 'http://search.yahooapis.com/WebSearchService/V1/webSearch'
 
class YahooSearchError(Exception):
    pass
 
# Pris sur http://developer.yahoo.com/python/python-json.html
def search(query, results=20, start=1, **kwargs):
    kwargs.update({
        'appid': YAHOO_APP_ID,
        'query': query,
        'results': results,
        'start': start,
        'output': 'json'
    })
    url = SEARCH_BASE + '?' + urllib.parse.urlencode(kwargs)
    result = json.load(urllib.request.urlopen(url))
    if 'Error' in result:
        raise YahooSearchError(result['Error'])
    return result['ResultSet']
 
query = input('Que voulez-vous rechercher ? ')
for result in search(query)['Result']:
    print("{0} : {1}".format(result['Title'], result['Url']))

Résultat:

TODO

Comment cela fonctionne :

Nous obtenons les résultats de la recherche à partir d'un site en particulier en passant le texte à rechercher sous un format donné. Nous indiquons différentes options que nous combinons sous la forme key1=value1&key2=value2 , ce qui est géré par la fonction urllib.parse.urlencode() .

Donc, par exemple, ouvrez ce lien dans votre navigateur et vous aurez 20 résultats, à partir du premier, pour les mots "byte of python", et nous demandons ces résultats au format JSON.

Nous ouvrons une connexion à cet URL avec la fonction urllib.request.urlopen() et nous passons ce handle de fichier json.load() qui va lire le contenu et le convertir en un objet Python. Nous bouclons ensuite sur les résultats et les affichons à l'utilisateur.

[edit] La série : Le Module de la Semaine

Il reste beaucoup de choses à découvrir dans la librairie standard, comme le debugging, les options en ligne de commande, les expressions régulières et ainsi de suite.

La meilleure façon d'explorer la librairie standard est de lire l'excellente série de Doug Hellmann Le Module Python de La Semaine .

[edit] Récapitulatif

Nous avons exploré quelques fonctionnalités des nombreux modules de la Librairie Standard Python. Il est fortement recommandé de naviguer dans la Documentation De La Librairie Standard Python pour avoir une idée de tous les modules disponibles.

Ensuite, nous allons voir différents aspects de Python afin que notre voyage dans Python soit plus complet.



Please add your comments by clicking on the 'Discussion' link in the left sidebar.