Python cung cấp nhiều cách tiện lợi để bạn làm việc với file. Ở trên, bạn đã đọc dữ liệu từ Standard Input và ghi dữ liệu tới Standard Output. Bây giờ chúng ta tìm hiểu cách sử dụng các file dữ liệu thực sự. Một file là một nơi lưu trữ ngoại vi trên hard disk, tại đó dữ liệu có thể được lưu trữ và thu nhận. Dưới đây là các hoạt động trên File
Trước khi làm việc với bất cứ File nào, bạn phải mở File đó. Để mở một File, Python cung cấp hàm open(). Nó trả về một đối tượng File mà được sử dụng với các hàm khác. Với File đã mở, bạn có thể thực hiện các hoạt động đọc, ghi, … trên File đó. Cú pháp của hàm open() là:
doi_tuong_file = open(ten_file [, access_mode][, buffer])
ten_file là tên File bạn muốn truy cập.
access_mode xác định chế độ của File đã được mở. Có nhiều mode sẽ được trình bày trong phần dưới. Bạn nên xác định mode này phụ thuộc vào các hoạt động mà bạn muốn thực hiện trên File đó. Chế độ truy cập mặc định là read.
buffer Nếu buffer được thiết lập là 0, nghĩa là sẽ không có trình đệm nào diễn ra. Nếu xác định là 1, thì trình đệm dòng được thực hiện trong khi truy cập một File. Nếu là số nguyên lớn hơn 1, thì hoạt động đệm được thực hiện với kích cỡ bộ đệm đã cho. Nếu là số âm, thì kích cỡ bộ đệm sẽ là mặc định (hành vi mặc định).
Khi bạn đã thực hiện xong các hoạt động trên File thì cuối cùng bạn cần đóng File đó. Python tự động đóng một File khi đối tượng tham chiếu của một File đã được tái gán cho một file khác. Tuy nhiên, sử dụng phương thức close() để đóng một file là một sự thực hành tốt cho bạn. Phương thức close() có cú pháp như sau:
fileObject.close();
Để đọc một File, bạn sử dụng phương thức read() trong Python. Cú pháp là:
doi_tuong_file.read(giatri);
Ở đây, value là số byte để được đọc từ file đã mở. Phương thức này bắt đầu đọc từ phần đầu file và nếu bạn không cung cấp tham số value thì phương thức này cố gắng đọc nhiều dữ liệu nhất có thể, có thể tới cuối File.
Phương thức write() được sử dụng để ghi bất kỳ chuỗi nào tới một File đã mở. Bạn chú ý là phương thức write này không thêm một ký tự newline (dòng mới) ('\n') vào cuối chuỗi. Cú pháp của write() là:
doi_tuong_file.write(string);
Dưới đây là chương trình ví dụ để đọc và ghi dữ liệu từ một File trong Python:
obj=open("abcd.txt","w") obj.write("Python xin chao cac ban") obj.close() obj1=open("abcd.txt","r") s=obj1.read() print s obj1.close() obj2=open("abcd.txt","r") s1=obj2.read(20) print s1 obj2.close()
Kết quả là:
>>> Python xin chao cac ban Chao mung ban den voi the gioi Python >>>
Đối tượng File có các thuộc tính sau:
Thuộc tính | Miêu tả |
---|---|
file.closed | Trả về true nếu file đã được đóng, nếu không là false |
file.mode | Trả về chế độ truy cập nào mà file đã mở với |
file.name | Trả về tên file |
file.softspace | Trả về false nếu space được yêu cầu tường minh với print, nếu không là true |
Chúng ta tạo foo.txt có nội dung sau:
# Mo mot file fo = open("foo.txt", "wb") fo.write( "Python la mot ngon ngu lap trinh tuyet voi.\nMinh cung nghi nhu the!!\n"); # Dong file da mo fo.close()
Giờ chúng ta kiểm tra các thuộc tính của nó:
# Mo mot file fo = open("foo.txt", "wb") print "Ten cua file la: ", fo.name print "File da duoc dong hay chua : ", fo.closed print "Che do mode la : ", fo.mode print "Softspace la : ", fo.softspace
Kết quả là:
Ten cua file la: foo.txt File da duoc dong hay chua : False Che do mode la : wb Softspace la : 0
File có thể được mở với các chế độ truy cập khác nhau. File có thể được mở trong Text Mode hoặc Binary Mode. Bảng dưới liệt kê và giới thiệu các chế độ này:
Mode | Miêu tả |
---|---|
r | Mở file trong chế độ đọc, đây là chế độ mặc định. Con trỏ tại phần bắt đầu của File |
rb | Mở file trong chế độ đọc cho định dạng nhị phân, đây là chế độ mặc định. Con trỏ tại phần bắt đầu của File |
r+ | Mở file để đọc và ghi. Con trỏ tại phần bắt đầu của File |
rb+ | Mở file để đọc và ghi trong định dạng nhị phân. Con trỏ tại phần bắt đầu của File |
w | Mở File trong chế độ ghi. Nếu file đã tồn tại, thì ghi đè nội dung của file đó, nếu không thì tạo một file mới |
wb | Mở File trong chế độ ghi trong định dạng nhị phân. Nếu file đã tồn tại, thì ghi đè nội dung của file đó, nếu không thì tạo một file mới |
w+ | Mở file để đọc và ghi. Nếu file tồn tại thì ghi đè nội dung của nó, nếu file không tồn tại thì tạo một file mới để đọc và ghi |
wb+ | Mở file để đọc và ghi trong định dạng nhị phân. Nếu file tồn tại thì ghi đè nội dung của nó, nếu file không tồn tại thì tạo một file mới để đọc và ghi |
a | Mở file trong chế độ append. Con trỏ là ở cuối file nếu file này đã tồn tại. Nếu file không tồn tại, thì tạo một file mới để ghi |
ab | Mở file trong chế độ append trong chế độ nhị phân. Con trỏ là ở cuối file nếu file này đã tồn tại. Nếu file không tồn tại, thì tạo một file mới để ghi |
a+ | Mở file trong để đọc và append. Con trỏ file tại cuối nếu file đã tồn tại. Nếu không tồn tại thì tạo một file mới để đọc và ghi |
ab+ | Mở file trong để đọc và append trong định dạng nhị phân. Con trỏ file tại cuối nếu file đã tồn tại. Nếu không tồn tại thì tạo một file mới để đọc và ghi |
Phương thức rename() trong os Module được sử dụng để thay tên file. Phương thức này nhận hai tham số là tên file cũ và tên file mới.
os.rename(ten_file_hien_tai, ten_file_moi)
Ví dụ sau thay tên test1.txt thành test2.txt:
import os # Thay ten tu test1.txt thanh test2.txt os.rename( "test1.txt", "test2.txt" )
Bạn có thể sử dụng phương thức remove() của os Module để xóa các file với tham số là tên file bạn cần xóa.
os.remove(ten_file)
Ví dụ sau sẽ xóa test2.txt:
import os # Xoa test2.txt os.remove("text2.txt")
Phương thức tell() nói cho bạn biết vị trí hiện tại bên trong file. Nói cách khác, việc đọc và ghi tiếp theo sẽ diễn ra trên các byte đó.
Phương thức seek(offset[, from]) thay đổi vị trí hiện tại bên trong file. Tham số offset chỉ số byte để được di chuyển. Tham số from xác định vị trí tham chiếu mà từ đó byte được di chuyển.
Nếu from được thiết lập là 0 nghĩa là sử dụng phần đầu file như là vị trí tham chiếu và 1 nghĩa là sử dụng vị trí hiện tại như là vị trí tham chiếu và nếu là 2 thì sử dụng phần cuối file như là vị trí tham chiếu.
Sử dụng foo.txt đã tạo ở trên để minh họa các hàm tell và seek:
# Mo mot file fo = open("foo.txt", "r+") str = fo.read(10); print "Chuoi da doc la : ", str # Kiem tra con tro hien tai position = fo.tell(); print "Con tro file hien tai : ", position # Dat lai vi tri con tro tai vi tri ban dau mot lan nua position = fo.seek(0, 0); str = fo.read(10); print "Chuoi da doc la : ", str # Dong file da mo fo.close()
Kết quả là:
Chuoi da doc la : Python is Con tro file hien tai : 10 Chuoi da doc la : Python la
» Tin mới nhất:
» Các tin khác: