Page 60 - Python Simple
P. 60

7. Vào và ra                                                     http://www.vithon.org/tutorial/2.5/node9.html



                  >>> f.read(1)
                  '5'
                  >>> f.seek(-3, 2) # Go to the 3rd byte before the end
                  >>> f.read(1)
                  'd'

             Khi bạn đã dùng xong, gọi f.close() để đóng nó lại và giải phóng tài nguyên
             hệ thống đã sử dụng khi mở tập tin. Sau khi gọi f.close(), mọi cách dùng đối
             tượng tập tin sẽ tự động thất bại.

                  >>> f.close()
                  >>> f.read()
                  Traceback (most recent call last):
                    File "<stdin>", line 1, in ?
                  ValueError: I/O operation on closed file


             Các đối tượng tập tin có thêm các phương thức phụ như isatty() và
             truncate() không được thường xuyên dùng; tham khảo tài liệu thư viện để biết
             thêm về các đối tượng tập tin.

             7.2.2 pickle mô-đun


             Các chuỗi có thể được ghi hoặc đọc dễ dàng từ một tập tin. Các số cần một ít cố

             gắng hơn, vì phương thức read() chỉ trả về chuỗi, và cần được truyền vào một
             hàm như int(), nó sẽ nhận một chuỗi như '123' và trả về giá trị số 123 của nó.
             Tuy nhiên, khi bạn muốn lưu các kiểu dữ liệu phức tạp hơn như danh sách, từ
             điển, hoặc các đối tượng, việc này trở nên rắc rối hơn nhiều.

             Thay vì để người dùng luôn viết và gỡ rối mã để lưu các kiểu dữ liệu phức tạp,
             Python cung cấp một mô-đun chuẩn gọi là pickle. Đây là một mô-đun tuyệt diệu
             có thể nhận hầu hết mọi đối tượng Python (ngay cả một vài dạng mã Python!), và
             chuyển nó thành một chuỗi; quá trình này được gọi là giầm (pickling). Tạo lại đối
             tượng từ một chuỗi được gọi là vớt (unpickling). Giữa việc giầm và vớt, biểu diễn
             dạng chuỗi của đối tượng có thể được lưu vào tập tin, hoặc gửi qua mạng đến
             một máy ở xa.

             Nếu bạn có một đối tượng x, và một đối tượng tập tin f đã được mở để ghi vào,
             cách đơn giản nhất để giầm đối tượng chỉ cần một dòng mã:

                  pickle.dump(x, f)


             Để vớt đối tượng ra, nếu f là một đối tượng tập tin đã được mở để đọc:

                  x = pickle.load(f)

             (Có những biến thể khác, dùng khi giầm nhiều đối tượng hoặc khi bạn không
             muốn viết dữ liệu đã giầm vào tập tin; tham khảo toàn bộ tài liệu về pickle
             trong Tham khảo thư viện Python.)

             pickle là cách chuẩn để làm cho các đối tượng Python có thể được lưu và dùng
             lại bởi các chương trình khác, hoặc bởi lần chạy khác của cùng chương trình;



     6 of 7                                                                                   08/31/2011 10:26 AM
   55   56   57   58   59   60   61   62   63   64   65