jeudi 29 octobre 2009

Lecture de fichier et streaming d'objets en Python

Voici quelques notes et exemples rudimentaires de lecture de fichier texte.

Lecture séquentielle
>>> def readFile( sFilename ):
    file = open( sFilename )
    while 1:
        line = file.readline()
        if not line:
            break
        print( line )
    file.close()
>>> readFile( 'c:\\dcu\\test.txt' )
***
Plus d'information sur la lecture de fichier dans cet article "Reading Text Files".

fichiers et séquences

Qui n'a pas un jour eu le besoin de charger le contenu d'un fichier dans une liste ou une séquence?
Voici un petit script permettant de charger le contenu d'un fichier dans une séquence en quelques lignes.
>>> filename = 'c:/Source/MySoft/fileset2'
>>> _file = open( filename, 'r' )
>>> fileset2 = _file.readlines()
>>> _file.close()
>>> fileset2 
['acl.pas\n', 'Action.pas\n', 'Address.pas\n', 'Check.pas\n', 'Template.pas\n', 'listStuff.pas\n', 'ruine.pas\n', 'Cassandre.pas\n', 'ptoleme.pas\n', 'Codes.pas\n', 'BCV.pas\n', 'DisplayModule.pas\n', 'DocumentTemplate.pas\n' ]

plus d'info sur la manipulation de fichier sur l'article "Introduction to Python: File I/O".

Pickling
Ou le "streaming d'objets" !
Apparemment, le pickling est une méthode permettant de transformer un object en sa représentation texte compacte afin d'en permettre facilement le transport (par reseau, fichier, etc).
Le module pickle contient la fonction "dumps" permettant de transformer un objet en sa représentation texte.
>>> pickled = pickle.dumps( Mike ) # Mike est un objet de type Student
>>> print( pickled )
Fournira le résultat suivant:
(i__main__
Student
p0
(dp1
S'school'
p2
S'UIUC'
p3
sS'year'
p4
S'Senior'
p5
sS'name'
p6
S'Mike'
p7
sS'gpa'
p8
F0.59999999999999998
sS'major'
p9
S'CS'
p10
sb.

La fonction loads du module pickle permet quant a elle de recréer une instance de la classe.
>>> # La création d'un nouvel objet depuis le pickle
>>> Mike2 = pickle.loads(pickled)

Le streaming
Il est également possible d'écrire l'état d'un objet dans un fichier... voir l'exemple suivant:
>>> f = open( 'c:/pickle.dat', 'w' )
>>> P = pickle.Pickler( f )
>>> P.dump( Mike ) # Mike est un objet de type Student
>>> f.close()

Plus d'info voir l'article "Introduction to Python: File I/O".

Aucun commentaire: