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