Page 89 - Python Simple
P. 89
11. Giới thiệu sơ về bộ thư viện chuẩn - Phần II http://www.vithon.org/tutorial/2.5/node13.html
... newname = t.substitute(d=date, n=i, f=ext)
... print '%s --> %s' % (filename, newname)
img_1074.jpg --> Ashley_0.jpg
img_1076.jpg --> Ashley_1.jpg
img_1077.jpg --> Ashley_2.jpg
Một ứng dụng khác của tạo mẫu là việc tách biệt lô-gíc chương trình ra khỏi các chi tiết
về các định dạng đầu ra khác nhau. Điều này giúp cho việc thay thế các khuôn mẫu tùy
biến cho các tập tin XML, các báo cáo bằng văn bản thông thường và các báo cáo bằng
HTML.
11.3 Làm việc với bản ghi dữ liệu nhị phân
struct (mô-đun) cung cấp các hàm pack() và unpack() để dùng với các định dạng bản
ghi nhị phân với chiều dài không cố định. Ví dụ sau đây minh họa phương pháp lặp qua
các thông tin trong phần tiêu đề của một tập tin ZIP (ký hiệu "H" và "L" biểu diễn các số
không dấu hai byte và bốn byte):
import struct
data = open('myfile.zip', 'rb').read()
start = 0
for i in range(3): # show the first 3 file headers
start += 14
fields = struct.unpack('LLLHH', data[start:start+16])
crc32, comp_size, uncomp_size, filenamesize, extra_size = fields
start += 16
filename = data[start:start+filenamesize]
start += filenamesize
extra = data[start:start+extra_size]
print filename, hex(crc32), comp_size, uncomp_size
start += extra_size + comp_size # skip to the next header
11.4 Đa luồng
Phân luồng là kỹ thuật phân tách các tác vụ khác nhau của một chương trình khi chúng
không bị ràng buộc trật tự với nhau. Các luồng được sử dụng để tăng tính đáp ứng của
các chương trình ứng dụng đòi hỏi việc nhập liệu từ người dùng diễn ra cùng lúc với các
tiến trình nền khác. Một trường hợp tương tự là việc chạy các tác vụ vào ra song song
với các tác vụ tính toán ở một luồng khác.
Đoạn mã sau đây minh họa cách mô-đun threading chạy các tác vụ nền trong khi
chương trình chính vẫn đang chạy:
import threading, zipfile
class AsyncZip(threading.Thread):
def __init__(self, infile, outfile):
threading.Thread.__init__(self)
self.infile = infile
self.outfile = outfile
3 of 7 08/31/2011 10:30 AM