Page 58 - Python Simple
P. 58
7. Vào và ra http://www.vithon.org/tutorial/2.5/node9.html
>>> print 'Jack: %(Jack)d; Sjoerd: %(Sjoerd)d; Dcab: %(Dcab)d' % table
Jack: 4098; Sjoerd: 4127; Dcab: 8637678
Cách này đặc biệt hữu dụng khi đi kèm với hàm có sẵn vars() mới, nó trả về
một từ điển chứa tất cả các biến cục bộ.
7.2 Đọc và viết tập tin
open() trả về một đối tượng tập tin, và thường được dùng với hai thông số:
"open(filename, mode)".
>>> f=open('/tmp/workfile', 'w')
>>> print f
<open file '/tmp/workfile', mode 'w' at 80a0960>
Thông số thứ nhất là một chuỗi chứa tên tập tin. Thông số thứ hai là một chuỗi
khác chứa một vài ký tự xác định cách thức tập tin sẽ được dùng. mode có thể là
'r' khi tập sẽ chỉ được đọc, 'w' chỉ được ghi (tập tin cùng tên đang có sẽ bị
xóa), và 'a' mở tập tin để thêm vào cuối; mọi dữ liệu ghi vào tập tin sẽ được tự
động thêm vào cuối. 'r+' mở tập tin để đọc và ghi. Thông số mode là không bắt
buộc; 'r' sẽ được giả định nếu nó bị bỏ qua.
Trong Windows và Macintosh, 'b' thêm vào mode mở tập tin ở chế độ nhị phân,
cho nên cũng có các chế độ khác như 'rb', 'wb', và 'r+b'. Windows phân biệt
rõ các tập tin văn bản và nhị phân; ký tự hết dòng (end-of-line) trong các tập tin
văn bản được tự động thay đổi một chút khi dữ liệu được đọc hay ghi. Việc thay
đổi sau bức bình phong (behind-the-scene) như vậy không ảnh hưởng các tập tin
văn bản ASCII, nhưng nó sẽ phá dữ liệu nhị phân như trong các tập tin JPEG hay
hàm EXE . Cần cẩn thận dùng chế độ nhị phân khi đọc và ghi các tập tin như vậy.
7.2.1 Phương thức của đối tượng tập tin
Các ví dụ trong mục này sẽ giả sử một đối tượng tập tin f đã được tạo.
Để đọc nội dung tập tin, gọi f.read(size), nó đọc một số lượng dữ liệu và trả về
một chuỗi. size là một thông số số nguyên không bắt buộc. Khi size bị bỏ qua hoặc
âm, toàn bộ nội dung tập tin sẽ được đọc và trả về; bạn sẽ gặp vấn đề nếu tập tin
lớn gấp đôi bộ nhớ của máy bạn. Ngược lại, nhiều nhất size byte sẽ được đọc và
trả về. Nếu đã đến cuối tập tin, f.read() sẽ trả về một chuỗi rỗng ("").
>>> f.read()
'This is the entire file.\n'
>>> f.read()
''
f.readline() đọc một dòng từ tập tin; ký tự dòng mới (\n) được giữ lại ở cuối
chuỗi, và sẽ chỉ bị bỏ qua ở dòng cuối của tập tin nếu tập tin không kết thúc
bằng một dòng mới. Điều này làm giá trị trả về rõ ràng; nếu f.readline() trả về
một chuỗi rỗng có nghĩa là đã đụng cuối tập tin, trong khi một dòng trống thì
4 of 7 08/31/2011 10:26 AM