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.

Pentru şirurile şablon utilizatorul poate alege un anumit delimitator.De exemplu se poate alege drept delimitator<br />

caracterul % :<br />

>>> import time, os.path<br />

>>> photofiles = [’img_1074.jpg’, ’img_1076.jpg’, ’img_1077.jpg’]<br />

>>> class BatchRename(Template):<br />

... delimiter = ’%’<br />

>>> fmt = raw_input(’Enter rename style (%d-date %n-seqnum %f-format): ’)<br />

Enter rename style (%d-date %n-seqnum %f-format): Ashley_%n%f<br />

>>> t = BatchRename(fmt)<br />

>>> date = time.strftime(’%d%b%y’)<br />

>>> for i, filename in enumerate(photofiles):<br />

... base, ext = os.path.splitext(filename)<br />

... newname = t.substitute(d=date, n=i, f=ext)<br />

... print ’%s --> %s’ % (filename, newname)<br />

img_1074.jpg --> Ashley_0.jpg<br />

img_1076.jpg --> Ashley_1.jpg<br />

img_1077.jpg --> Ashley_2.jpg<br />

O altă aplicabilitate a şirurilor şablon se găseşte în prelucrarea datelor de ieşire scrise în diferite formate. Aceasta<br />

se realiză înlocuind şabloanele definite de utilizator pentru fisierele XML, rapoartele text, sau rapoartele web scrise<br />

în HTML.<br />

11.3 Lucrul cu reprezentări binare ale datelor<br />

Modulul struct are funcţiile pack() şi unpack() pentru lucrul cu formate de înregistrare binară a datelor<br />

cu lungime variabilă. Exemplul următor prezintă cum se pot căuta informaţii prin header-ul unui fişier ZIP (cu<br />

cod de împachetare "H" şi "L", reprezentând numere făra semn de doi, respectiv, patru octeţi) :<br />

import struct<br />

data = open(’myfile.zip’, ’rb’).read()<br />

start = 0<br />

for i in range(3):<br />

# prezinta primele 3 headere ale fisierului<br />

start += 14<br />

fields = struct.unpack(’LLLHH’, data[start:start+16])<br />

crc32, comp_size, uncomp_size, filenamesize, extra_size =<br />

start += 16<br />

filename = data[start:start+filenamesize]<br />

start += filenamesize<br />

extra = data[start:start+extra_size]<br />

print filename, hex(crc32), comp_size, uncomp_size<br />

start += extra_size + comp_size # sare la urmatorul header<br />

fields<br />

11.4 Multi-threading<br />

Threading este o tehnică prin care se realizează decuplarea procesele care nu sunt dependente secvenţial unul<br />

de celălalt. Această tehnică se poate folosi pentru îmbunătăţirea răspunsului aplicaţiilor care primesc date de<br />

la utilizator, atunci când alte procese rulează în background. Un astfel de caz este acela în care un proces de<br />

intrare/ieşire rulează în paralel cu un proces de calcul.<br />

Următorul program prezintă cum modulul de nivel înalt threading poate executa procese in background, în<br />

timp ce programul principal continuă să ruleze :<br />

11.3. Lucrul cu reprezentări binare ale datelor 77

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

Saved successfully!

Ooh no, something went wrong!