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
   84   85   86   87   88   89   90   91   92   93   94