28.01.2015 Views

Tutorial Python - Starship

Tutorial Python - Starship

Tutorial Python - Starship

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

dacă referinţă este 1 şi faţă de sfârşitul fişierului dacă referinţă este 2. Dacă al doilea parametru este<br />

omis, valoarea lui implicită va fi 0, deci punctul de referinţă va fi începutul fişierului:<br />

>>> f=open(’/tmp/workfile’, ’r+’)<br />

>>> f.write(’0123456789abcdef’)<br />

>>> f.seek(5) # Salt la al 5-le byte din fisier<br />

>>> f.read(1)<br />

’5’<br />

>>> f.seek(-3, 2) # Salt la al 3-lea byte de la sfarsitul fisierului<br />

>>> f.read(1)<br />

’d’<br />

Când terminaţi lucrul cu un fişier, acesta trebuie închis folosind f.close(). După închiderea fişierului orice<br />

încercare de operaţie asupra fişierului va eşua:<br />

>>> f.close()<br />

>>> f.read()<br />

Traceback (most recent callk last):<br />

File "", line 1, in <br />

ValueError: I/O operation on closed file<br />

Obiectele fişier poseadă şi alte metode, cum ar fi isatty() şi truncate() care sunt mai puţin folosite.<br />

(Consultaţi "<strong>Python</strong> Library Refference" pentru mai multe detalii).<br />

7.2.2 Modulul pickle<br />

Şirurile de caractere pot fi citite şi scrise foarte uşor dintr-un, respectiv într-un fişier. Cu numerele lucrurile se<br />

complică puţin. Aţi putea să transformaţi, înainte de scrierea în fişier, numărul în string, apoi să îl scrieţi, iar la<br />

citire să îl transformaţi înapoi în număr. Un astfel de mecanism este complet ineficient.<br />

Pentru aceste situaţii, şi altele mult mai complexe, <strong>Python</strong> dispune de modulul pickle care poate transforma<br />

orice obiect <strong>Python</strong> într-un string. Acest proces se cheamă pickling, denumirea procesului invers se numeşte<br />

unpickling. Între aceste două proceduri string-ul poate fi salvat într-un fişier, transmis în reţea, etc.<br />

Cea mai simplă metodă de a salva un obiect într-un fişier este următoarea:<br />

pickle.dump(x, f)<br />

Iar pentru a încărca un obiect dintr-un fişier:<br />

x = pickle.load(f)<br />

Există şi alte metode de a transforma un obiect într-un şir fără a-l salva într-un fişier. Pentru mai multe detalii<br />

consultaţi “<strong>Python</strong> Library Refference”.<br />

Prin procedeele de ‘pickling’ şi ‘unpickling’, pickle poate stoca obiecte ce pot fi apoi reutilizate. Termenul<br />

tehnic pentru un astfel de obiect este obiect persistent. Deoarece aceste metode sunt foarte des folosite, programatorii<br />

care creează extensii ale limbajului <strong>Python</strong> au grijă ca tipurile de date nou definite să poată fi salvate şi<br />

încărcate corect(mai bine zis să se comporte corect în procesul de ‘pickling’ şi apoi ‘unpickling’).<br />

7.2. Citirea şi scrierea fişierelor 49

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!