formations/python/formation/stdlib.txt

209 lines
4.7 KiB
Plaintext

La :term:`librairie standard`
================================
.. module:: builtins
:synopsis: les fonctions directement à disposition sans import spécifique
- le module :mod:`builtins`, tout ce qui est accessible directement
>>> dir('__builtins__')
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__',
'__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__',
'__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__',
'__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__',
'__subclasshook__', '_formatter_field_name_split', '_formatter_parser',
'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs',
'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower',
'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip',
'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit',
'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title',
'translate', 'upper', 'zfill']
>>>
- le module :mod:`subprocess`, appels systèmes
.. module:: subprocess
:synopsis: exécuter une commande shell, récupérer le code retour et la sortie
.. function:: subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)¶
>>> subprocess.call(["ls", "-l"])
0
>>> subprocess.call("exit 1", shell=True)
1
.. function:: subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, universal_newlines=False)¶
>>> subprocess.check_output(["echo", "Hello World!"])
'Hello World!\n'
>>> subprocess.check_output("exit 1", shell=True)
Traceback (most recent call last):
...
subprocess.CalledProcessError: Command 'exit 1' returned non-zero exit status 1
- le module :mod:`sys`, paramètres et fonctions systèmes
.. module:: sys
:synopsis: paramètres et fonctions systèmes
.. envvar:: sys.argv
la ligne de commande
.. function:: sys.exit()
terminer un programme
.. envvar:: sys.path
ce qu'il y a dans le :envvar:`PYTHONPATH`
.. module:: optparse
:synopsis: parsing de la ligne de commande
- le module :mod:`optparse` pour faire des outils ligne de commande
module plus récent : argparse
.. literalinclude:: snippets/cmdline.py
- les modules de tests unitaires :mod:`unittest` et :mod:`doctests`
.. module:: unittest
:synopsis: module de tests unitaires
.. module:: doctest
:synopsis: module de tests unitaires basé sur les docstrings
- le module :mod:`xml.etree` pour parser du xml
::
tree = xml.parse("testFile.xml")
rootElement = tree.getroot()
bookList = rootElem.findall("Books")
if bookList != None:
for book in bookList:
#faire quelque chose avec les livres
- le module :mod:`urllib` pour parser les urls et les manipuler (`urllib2`)
.. module:: urllib
:synopsis: parse des urls
.. function:: urllib.urlopen(url)
lit une url distante
.. module:: time
:synopsis: caculs de temps
- :mod:`time` pour la manipulation de temps
::
t1 = time.clock()
# Do Stuff Here
t2 = time.clock()
print t2 - t1
**now**
::
import time
now = time.localtime(time.time())
dateStr = time.strftime("%A, %B %d, %Y, %I:%M %p", now)
print dateStr
.. module:: getpass
:synopsis: recupération des mots de passe en ligne de commande
- le module :mod:`getpass` pour gérer les motes de passe
>>> import getpass
>>> p = getpass.getpass()
Password:
>>> p
'toto'
>>>
.. module:: shelve
:synopsis: linéarisation de données
Linéarisation de données
==========================
>>> import shelve
>>> shelve.open("database", 'c')
{}
>>> s = shelve.open("database", 'c')
>>> s
{}
>>> s["o"] = ('a', 'b', 'c')
>>> s.cl
s.clear s.close
>>> s.cl
s.clear s.close
>>> s.close()
>>>
.. module:: abc
:synopsis: les abstract base classes
- le module :mod:`abc` pour faire des interfaces propres
.. function:: abc.register(subclass)
exemple
::
from abc import ABCMeta
class MyABC:
__metaclass__ = ABCMeta
MyABC.register(tuple)
assert issubclass(tuple, MyABC)
assert isinstance((), MyABC)
.. module:: hotshot
:synopsis: benchmark
- le module :mod:`hotshot` benchmark
::
import hotshot
prof = hotshot.Profile('toto.txt')
prof.runcall(make_description)
prof.close()
- un exemple de librairie externe : :mod:`IPy`
.. module:: IPy
:synopsis: traitement des ips en python < python 3.3 remplacé par ipadress
::
sudo apt-get install python-ipy
::
from IPy import IP
try:
ipy = IP('{0}/{1}'.format(ip, mask), make_net=True)
except ValueError:
print "marche pas"
network = ipy.net()
broadcast = ipy.broadcast()
return broadcast, network