Trong Python, chúng ta không cần cài đặt thêm thư viện để đọc và ghi tệp. Python cung cấp sẵn các hàm: tạo, đọc và ghi tệp.
Trong bài này, chúng ta sẽ tìm hiểu về:
- Cách tạo một tệp văn bản
- Cách ghi tiếp dữ liệu vào tệp
- Cách đọc một tệp
- Cách đọc một tệp theo từng dòng
- Các chế độ làm việc với tệp trong Python
Cách tạo một tệp văn bản
Với Python, bạn có thể tạo tệp .text (example.txt) bằng cách sử dụng mã nguồn, dưới đây là cách làm điều đó:
Bước 1)
f= open("guru99.txt","w+")
- Chúng ta khai báo biến f để mở tệp với tên gọi textfile.txt. Hàm open cần hai đối số, tệp chúng ta muốn mở và một chuỗi đại diện cho quyền hoặc thao tác mà chúng ta muốn thực hiện với tệp đó.
- Ở đây, chúng ta đã sử dụng “w” trong đối số truyền vào. Trong đó, “w” thể hiện quyền được ghi và dấu cộng có nghĩa là tệp sẽ được tạo mới nếu nó không tồn tại.
- Ngoài tham số “w” là ghi còn có các tham số khác như “r” là đọc, “a” là ghi tiếp vào tệp và dấu cộng có nghĩa là tệp sẽ được tạo mới nếu nó không tồn tại.
Bước 2)
for i in range(10):
f.write ("This is line % d r n"% (i + 1))
- Chúng ta có một vòng for lặp 10 lần.
- Sử dụng hàm write để ghi nội dung vào tệp.
- Kết quả chúng ta muốn ghi khi duyệt qua tệp đó là “this is line number”. Chúng ta thực hiện điều này thông qua hàm write và sau đó là %d (hiển thị số tự nhiên).
- Về cơ bản, chúng ta đang ghi vào tệp số dòng ta đang duyệt, sau đó là dấu kết thúc trở lại đầu dòng và một dòng mới.
Bước 3)
f.close ()
- Dòng lệnh này sẽ đóng và lưu tệp guru99.txt.
Dưới đây là kết quả sau khi thực thi mã nguồn
Khi bạn mở tệp, trong trường hợp này là “guru99.txt”, bạn sẽ thấy nội dung như sau:
Cách ghi tiếp dữ liệu vào tệp
Bạn cũng có thể ghi tiếp thêm dữ liệu vào một tệp đã có hoặc tệp mới
Bước 1)
f = open("guru99.txt", "a +")
Một lần nữa nếu bạn thấy một dấu cộng trong mã nguồn, nó có nghĩa là một tệp mới sẽ được tạo nếu không tồn tại. Nhưng trong trường hợp này, chúng ta đã có tệp, vì vậy chúng ta không bắt buộc phải tạo tệp mới.
Bước 2)
for i in range(2):
f.write("Appended line %drn" % (i+1))
Lệnh này sẽ ghi dữ liệu vào tệp dưới chế độ ghi tiếp
Bạn có thể thấy kết quả đầu ra trong tệp “guru99.txt”. Đầu ra của mã nguồn trên tệp được tạo trước đó cùng với dữ liệu mới.
Cách đọc một tệp
Bạn không chỉ có thể tạo một tệp “.txt” từ Python mà bạn thể đọc tệp với tham số “r”
Bước 1) Mở tệp với tham số “r”
f = open ("guru99.txt", "r")
Bước 2) Chúng ta sẽ sử dụng tham số đọc (“r”) để kiểm tra xem tệp có ở chế độ mở không. Nếu có, chúng ta sẽ tiếp tục thực hiện việc đọc.
if f.mode == 'r':
Bước 3) Sử dụng f.read để đọc dữ liệu tệp và lưu trữ nội dung của tệp ra biến “contents”
contents = f.read ()
Bước 4) In nội dung
Đây là đầu ra
Cách đọc tệp theo từng dòng
Nếu dữ liệu của chúng ta quá lớn và chúng ta không thể đọc hết nội dung tệp, Python hỗ trợ đọc từng dòng. Đoạn mã sau sẽ phân tách dữ liệu của bạn khiến chúng trở nên dễ đọc hơn.
Khi bạn chạy lệnh (f1 = f.readlines ()) để đọc tệp theo từng dòng, nó sẽ phân tách từng dòng và hiển thị ở định dạng giúp người dùng dễ dàng đọc được. Trong trường hợp này tệp của chúng ta có số dòng ít nên đầu ra trông gần giống như ở chế độ đọc thường. Nhưng nếu có một tệp dữ liệu phức tạp mà bạn không thể đọc được, đoạn mã trên sẽ trở nên hữu dụng.
Các chế độ làm việc với tệp trong Python
Tham số | Mô tả |
‘r’ | Là chế độ mặc định. Nó sẽ mở tệp để đọc. |
‘w’ | Chế độ dành cho việc ghi. Nếu tệp chưa tồn tại, nó sẽ tạo tệp mới. Nếu tệp đã tồn tại, nó sẽ ghi đè lên tệp. |
‘x’ | Tạo một tệp mới. Nếu tệp đã tồn tại, thao tác sẽ thất bại. |
‘a’ | Mở tệp ở chế độ ghi tiếp. Nếu tệp không tồn tại, nó sẽ tạo một tệp mới. |
‘t’ | Là chế độ mặc định. Nó mở tệp ở dạng chữ. |
‘b’ | Mở tệp ở dạng nhị phân. |
‘+’ | Chế độ được dùng để mở tệp cho việc đọc và ghi (cập nhật) |
Dưới đây là toàn bộ mã nguồn
Ví dụ sử dụng Python 2
def main():
f= open("guru99.txt","w+")
#f=open("guru99.txt","a+")
for i in range(10):
f.write("This is line %drn" % (i+1))
f.close()
#Open the tệp back and read the contents
#f=open("guru99.txt", "r")
# if f.mode == 'r':
# contents =f.read()
# print contents
#or, readlines reads the individual line into a list
#fl =f.readlines()
#for x in fl:
#print x
if __name__== "__main__":
main()
Ví dụ sử dụng Python 3
def main():
f= open("guru99.txt","w+")
#f=open("guru99.txt","a+")
for i in range(10):
f.write("This is line %drn" % (i+1))
f.close()
#Open the tệp back and read the contents
#f=open("guru99.txt", "r")
#if f.mode == 'r':
# contents =f.read()
# print (contents)
#or, readlines reads the individual line into a list
#fl =f.readlines()
#for x in fl:
#print(x)
if __name__== "__main__":
main()
Tổng kết:
- Python cho phép bạn đọc, ghi và xóa các tệp.
- Sử dụng hàm open(“tên_tệp”, “w+”) để tạo tệp. Dấu “+” yêu cầu trình thông dịch Python tạo một tệp nếu nó không tồn tại.
- Để ghi tiếp dữ liệu vào tệp hiện có, hãy sử dụng open(“tên_tệp”, “a”)
- Python hỗ trợ đọc tệp theo từng dòng.