1. Xử lý File trong Python

Trong những bài trước đây, chúng ta mới chỉ thao tác dữ liệu trực tiếp ở trong một chương trình Python. Trên thực tế thì các dữ liệu sẽ thường được lưu trữ trong các tệp tin (File). Và để sử dụng được dữ liệu trong một chương trình Python ta cần biết cách xử lý một File.

Ngôn ngữ lập trình Python, hỗ trợ xử lý File và cho phép người lập trình viên có thể, thao tác mở, đọc và ghi tệp, cùng với nhiều tùy chọn xử lý File khác có thể hoạt động trên File. Trong Python, các khái niệm về thao tác xử lý File rất ngắn gọn và đơn giản – hiểu quả và chúng ta có thể xử lý tập tin văn bảntập tin nhị phân trong Python.

2. Mở đóng File trong Python

Mở File trong Python

Hàm chính để làm việc với các tệp trong Python là hàm open(). Hàm này cho phép ta có thể mở một File văn bản hoặc một File nhị phân vào chương trình Python.

Hàm open() sẽ nhận hai tham số cần thiết đó là:

  • Đường dẫn đến File cần mở
  • Chế độ mở File

Ví dụ đơn giản dưới đây, sử dụng hàm open() để mở một File văn bản có phần mở rộng .txt

File văn bản này sẽ có tên là laptrinhtudau.txt và đường dẫn là “D:\laptrinhtudau.txt” trong File này sẽ có nội dung như bên dưới:

Để mở File này, ta sẽ sử dụng hàm open() và truyền vào hai tham số như sau:

  • Đường dẫn đến File “D:\laptrinhtudau.txt”
  • Chế độ mở File để đọc (Read) với ký hiệu “r”

Dưới đây là đoạn code, mở File “D:\laptrinhtudau.txt” và đọc nội dung có trong File bằng chế độ “r” bằng cách sử dụng hàm open() trong Python

# Tao duong dan File
duong_dan = "D:\laptrinhtudau.txt"

# Che do doc file
che_do = "r"

# Ham open de mo file
f = open(duong_dan,che_do)

# Duyet qua File
for each in f:
    print(each,end=" ") # Hien thi tung tu co trong File

Kết quả:

Xin chao, toi la laptrinhtudau.com!

Có một cách khác trong Python để mở một File, đó là cách sử dụng với từ khóa with kết hợp với hàm open() – khi sử dụng cách này thì File được mở ra sau khi các thao tác bên trong File hoàn thành thì File sẽ tự động đóng mà không cần gọi hàm đóng File.

# Tao duong dan File
duong_dan = "D:\laptrinhtudau.txt"

# Doc File voi with
with open(duong_dan) as file: 
    # Doc du lieu trong File bang ham read()
    data = file.read()
    # Hien thi du lieu co trong File
    print(data)

Kết quả:

Xin chao, toi la laptrinhtudau.com!

Đóng File trong Python

Các thao tác với File trong Python hoàn thành, thì hãy đóng FIle lại để tránh trường hợp chương trình thực thi gây ra những thay đổi không mong muốn đối với File vừa thao tác.

Đóng file cũng đảm bảo rằng bộ nhớ được sử dụng khi mở File được giải phóng. Để đóng một File đã được mở trong Python, chúng ta có thể sử dụng hàm có sẵn close()

# Tao duong dan File
duong_dan = "D:\laptrinhtudau.txt"

# Che do doc file
che_do = "r"

# Ham open de mo file
f = open(duong_dan,che_do)

# Dong File  
f.close()
print("Thao tac file thanh cong!")

Kết quả:

Thao tac file thanh cong!

Cách đóng file bằng phương pháp gọi hàm close() đôi khi vẫn gây ra các trường hợp ngoại lệ. Để đảm bảo việc đóng File hoàn tất, bạn nên sử dụng kết hợp với Try…Finally ( khi đó việc đóng File sẽ luôn luôn được thực thi bất chấp có hay không ngoại lệ) ở đây.

# Tao duong dan File
duong_dan = "D:\laptrinhtudau.txt"

# Che do doc file
che_do = "r"

try:
    # Thu mo mot file 
    f = open(duong_dan,che_do)

    # Thuc hien duyet noi dung trong file
    for each in f: 
        # Hien thi tung tu co trong File
        print(each,end=" ") 
finally: # Co ngoai le hay khong co ngoai le thi van thuc hien
    # Dong file
    f.close()

Kết quả:

Xin chao, toi la laptrinhtudau.com!

3. Các chế độ mở File trong Python

Có bốn chế độ khác nhau để mở tệp trong hàm open(), các chế độ đó là:

  • “r” – Mở File để đọc – sẽ gây ra lỗi nếu tệp không tồn tại.
  • a” – Mở File để thêm dữ liệu vào cuối File – sẽ tạo tệp nếu tệp không tồn tại.
  • “w” – Mở File để ghi dữ liệu – sẽ tạo tệp nếu tệp đó không tồn tại.
  • “x” – Tạo tệp được chỉ định – sẽ gây ra lỗi nếu tệp đã tồn tại

Ví dụ mở file với các chế độ: đọc, thêm, ghi, tạo trong Python

open("D:\laptrinhtudau.txt","r") # Doc file
open("D:\laptrinhtudau.txt","a") # Them du lieu vao cuoi file
open("D:\laptrinhtudau.txt","w") # Ghi du lieu vao file
open("D:\laptrinhtudau.txt","x") # Tao moi file

Ngoài ra, bạn có thể chỉ định xem tệp nên được xử lý ở chế độ nhị phân hay chế độ văn bản

  • “t” – Text – Văn bản – Ví dụ file có phần đuôi .txt
  • “b” – Binary – Chế độ nhị phân – Ví dụ: hình ảnh

Ví dụ mở file văn bản bằng chế độ rt – nghĩa là read text và đọc file nhị phân bằng chế độ “rb” – nghĩa là read binary 

open("D:\laptrinhtudau.txt","rt") # Doc file van ban 
open("D:\laptrinhtudau.bin", "rb") # Doc file nhi phan

4. Các phương thức xử lý File trong Python

Bảng dưới đây, liệt kê một số phương thức phổ biến thường được sử dụng để thao tác xử lý với tệp tin trong Python:

Phương Thức Mô tả
close() Đóng một File
fileno() Trả về File descriptor (là một số nguyên) mà được sử dụng bởi trình triển khai

cơ bản để yêu cầu các hoạt động I/O từ hệ điều hành.

flush() Xóa sạch hoặc chuyển ra ngoài bộ đệm nội tại, giống như hàm fflush của Stdio trong ngôn ngữ C
isatty() Trả về true nếu file được kết nối tới một thiết bị tty(-like), nếu không là false.
read() Đọc dữ liệu trong File
readable() Trả về True nếu file có thể đọc được.
readline() Đọc từng dòng trong File
readlines() Đọc và trả về một danh sách các dòng từ file.
seek() Thay đổi vị trí hiện tại bên trong file.
seekable() Trả về True nếu luồng hỗ trợ truy cập ngẫu nhiên.
tell() Trả về vị trí hiện tại bên trong file.
truncate() Cắt gọn kích cỡ file thành kích cỡ tham số size.
writable() Trả về True nếu file có thể ghi được.
write() Ghi dữ liệu vào File
writelines() Ghi một danh sách các dòng và file

Ví dụ, sử dụng một số phương thức read() để đọc dữ liệu, và phương thức write() để ghi dữ liệu vào File. Sau đó thực hiện đóng File vừa mở bằng phương thức close()

# Mo File voi che do doc
f = open("D:\laptrinhtudau.txt","r") 
# Doc file va gan vao bien data
data = f.read()
# Hien thi du lieu cua bien data
print(data)

# Mo File voi che do ghi
f2 = open("D:\laptrinhtudau.txt","w") 
# Ghi du lieu vao File voi phuong thuc write()
f2.write("Toi yeu lap trinh!")
# Thong bao sau khi ghi du lieu
print("Ghi du lieu thanh cong!")

# Dong File
f.close()
f2.close()

Kết quả:

Xin chao, toi la laptrinhtudau.com!
Ghi du lieu thanh cong!

Trong những bài sau, chúng ta sẽ cùng tìm hiểu và sử dụng chi tiết hơn các phương thức ở trên. Mời các bạn cùng chú ý đón xem!