Modifications entre les versions 14 et 15
Version 14 à la date du 2012-02-24 01:24:09
Taille: 3034
Éditeur: DavinBaragiotta
Commentaire:
Version 15 à la date du 2012-02-24 01:44:43
Taille: 2953
Éditeur: DavinBaragiotta
Commentaire: popen et commands deprecated en python 2.6
Texte supprimé. Texte ajouté.
Ligne 54: Ligne 54:
 * os.popen '''deprecated''' {{{
import os
f = os.popen("grep -rsn 'davin' .")
f.
read()
f.close()
 * subprocess {{{
import subprocess
out = subprocess.call("grep -rsn 'davin' . > ~/Bureau/davin", shell=True)
Ligne 60: Ligne 58:
  * pour lancer un processus : {{{subprocess}}}
  * pour lancer n'importe quoi en shell (avec risques qui viennent avec): {{{commands}}}
  * shell=True pour commande juste en un string

Python : Atelier intermédiaire


INTRODUCTION

  • Objectifs :
    • savoir coder ses propres objets
    • utiliser la bibliothèque standard et des packages existants


NOTIONS INTERMÉDIAIRES

Orienté-objet et classes

Objet, instance de classe

Attributs et méthodes

  • portée : de classe, d'objet

Héritage

  • object
  • si classe hérite : init DOIT appeler init de parent

    • appel de méthode de parent : ClassParent.methode(self) # self = obligatoire

self

  • représentation de l'objet (instance)
    • le "this" de Java, PHP

CRUD

__init__

Décorateurs

Exceptions

Lambda

  • lambda input: output
  • lambda x: x*2

Bibliothèque standard

  • datetime
  • re
  • os.system
  • subprocess

    import subprocess
    out = subprocess.call("grep -rsn 'davin' . > ~/Bureau/davin", shell=True)
    • shell=True pour commande juste en un string
  • os.path
  • pickle
  • sqlite3
  • zlib
  • csv
  • json
  • email
  • uuid
  • urllib
  • gettext
  • pdb
  • sys
  • pwd

    # http://www.python.org/doc/lj21.html
    import posix
    import pwd
    pwd.getpwall()
    print 'hello', pwd.getpwuid(posix.getuid())[0]
    # progfou: et autre détail non négligeable pour nous à l'AuF : pwd fait des appels à la libc, qui passe par NSS, donc ça donne aussi les comptes réseau
  • socket

    # socket.getaddrinfo pour faire de la résolution DNS
    import socket
    socket.getaddrinfo('smtp.sn.auf.org', 25)

Packages


EXERCICE

  • modifier iptables
  • créer un bot jabber


CONCLUSION

  • ne pas réinventer la roue : utiliser l'existant
  • DIY (do-it-yourself) : pour le reste, faites du "sur mesure"
  • yalla!

Ateliers/2012-02-24/Python/Plan (dernière édition le 2012-08-27 07:27:18 par DavinBaragiotta)