Đọc Ghi File Text Trong Python - Yêu Lập Trình

Python hỗ trợ rất nhiều hàm cho việc xử lý files. Điều này giúp chúng ta dễ dàng trong việc tạo, cập nhật, đọc và xóa file. Hôm nay chúng ta sẽ cùng nhau tìm hiểu về cách xử lý file text trong Python.

Nội dung của bài

  • 1 Mở một file
  • 2 Chỉ định các chế độ thao tác với file
  • 3 Đọc file
  • 4 Đọc theo dòng
  • 5 Ghi file
    • 5.1 Ghi file ở chế độ ‘w’
    • 5.2 Ghi với ở chế độ ‘a’
    • 5.3 Ghi file ở chế độ ‘r+’
  • 6 Ghi nhiều dòng
  • 7 Flush Output Buffer
  • 8 Close a file
  • 9 Tạo mới file
  • 10 Xóa file
  • 11 Check xem file có tồn tại
  • 12 Kết luận

Mở một file

Trước khi muốn thao tác với file chúng ta cần mở file đó. Python cung cấp sẵn hàm open() là một build-in function.

f = open('test.txt')

Khi chúng ta chỉ truyền vào tên file thì hệ thống sẽ hiểu file đang đọc có cùng thư mục với file python. Nếu muốn đọc file ở một thư mục nhất định chúng ta cần khai báo đường dẫn:

f = open(r'C:\Python3\Scripts\test.txt')

Lưu ý: khi chúng ta chỉ định đường dẫn chính xác, các ký tự bắt đầu bằng \ (như \ n \ r \ t, v.v.) được hiểu là các ký tự đặc biệt. Bạn có thể sử dụng:

  • raw strings như r’C:\Python3\Scripts\test.txt’
  • hoặc C:\\Python3\\Scripts\\test.txt’

Chỉ định các chế độ thao tác với file

Python có 5 chế độ đọc file

CharacterModeDescription
‘r’Read (mặc định)Đọc file ở chế độ read-only
‘w’WriteMở file và chỉ cho phép ghi đè nên file hiện tại (overwrite)
‘a’AppendMở file chỉ cho thêm mới vào cuối fil (append)
‘r+’Read+WriteMở file cho phép đọc và ghi.
‘x’CreateTạo file mới

Chúng ta cũng có thể chỉ định cách xử lý file

CharacterModeDescription
‘t’Text (mặc định)Đọc và ghi chuỗi ký tự vào file.
‘b’BinaryĐọc và ghi theo byte vào file. Chế độ này chúng ta sử dụng với tất cả các loại file.
# Mở file để đọc f = open('myfile.txt') # Mở file để ghi f = open('myfile.txt', 'w') # Mở file để đọc và ghi f = open('myfile.txt', 'r+') # Mở file để đọc dưới dạng nhị phân f = open('myfile.txt', 'rb')

Vì hai tham số ‘r’ và ‘t’ là mặc định nên chúng ta không cần đưa vào câu lệnh mở file.

Đọc file

Giả sử chúng ta có file test.txt với nội dung:

First line of the file. Second line of the file. Third line of the file.

Để đọc nội dung file chúng ta có thẻ sử dụng hàm read()

# Đọc toàn bộ file f = open('test.txt') print(f.read()) # Prints: # First line of the file. # Second line of the file. # Third line of the file.

Mặc định hàm read() sẽ đọc cả file, chúng ta có thể giới hạn số ký tự tối đa có thể đọc

# Đọc 10 ký tự trong file f = open('test.txt') print(f.read(10)) # Prints: # First line

Đọc theo dòng

Để đọc từng dòng của file chúng ta sử dụng readline()

f = open('test.txt') print(f.readline()) # Prints First line of the file. # Lời gọi tiếp theo sẽ thực hiện đọc dòng tiếp theo print(f.readline()) # Prints Second line of the file.

Đọc từng dòng cho đến khi hết file

f = open('test.txt') for line in f: print(line) # Prints: # First line of the file. # Second line of the file. # Third line of the file.

Đọc tất cả các dòng của file đưa vào danh sách các chuỗi ký tự (list of strings)

f = open('test.txt') print(f.readlines()) # Prints: # ['First line of the file.\n', 'Second line of the file.\n', 'Third line of the file.']

Ghi file

Sử dụng hàm write() để ghi vào một file đang tồn tại. Trước đó chúng ta cần mở file với các chế độ (‘w’, ‘a’, ‘r+’).

Ghi file ở chế độ ‘w’

f = open('test.txt', 'w') f.write('Hello world!')

File test.txt lúc này có nội dung:

Hello World!

Ở chế độ w, file sẽ bị ghi đè, tức là dữ liệu cũ bị xóa hết và ghi mới dữ liệu mới.

Ghi với ở chế độ ‘a’

f = open('test.txt', 'a') f.write('Hello world!')

File text lúc này có nội dung:

First line of the file. Second line of the file. Third line of the file.Hello world!

Ở chế độ ‘a’ dữ liệu sẽ được thêm mới vào cuối file.

Ghi file ở chế độ ‘r+’

Một phần của file sẽ bị ghi đè.

f = open('test.txt', 'r+') f.write('Hello world!')

Nội dung của file test.txt:

Hello world!f the file. Second line of the file. Third line of the file.

Ghi nhiều dòng

Ghi cùng lúc nhiều dòng vào file, chúng ta sử dụng hàm writelines()

f = open('test.txt', 'w') lines = ['New line 1\n', 'New line 2\n', 'New line 3'] f.writelines(lines)

Flush Output Buffer

Khi chúng ta ghi file, dữ liệu chưa ghi trực tiếp lên ổ cứng mà lưu trên bộ nhớ đệm (Buffer memory). Dữ liệu chỉ ghi vào file khi chúng ta đóng file hoặc gọi lệnh flush().

f = open('test.txt', 'a') f.write('Append this text.') f.flush()

Close a file

Sau khi mở file, thực hiện các thao tác cần thiết, chúng ta sử dung hàm close() để đóng file.

f = open('test.txt', 'w') lines = ['New line 1\n', 'New line 2\n', 'New line 3'] f.writelines(lines) f.close() print(f.closed) # print True

Có hai cách đảm bảo file được đóng dù có lỗi xảy ra trong quá trình xử lý.

Cách thứ nhất là cách mà Python gợi ý dùng với từ khóa with

with open('test.txt') as f: print(f.read())

File sẽ tự động đóng sau khi khối lệnh trong with được thực hiện.

Cách thứ 2 chúng ta sử dụng khối lệnh try-finally

f = open('test.txt') try: # xử lý với file finally: f.close()

Tạo mới file

Nếu chúng ta mở một file mà file đó không tồn tại, Python sẽ tạo mới file.

# write mode f = open('new_file.txt', 'w') # append mode f = open('new_file.txt', 'a') # read + write mode f = open('new_file.txt', 'r+')

Xóa file

Muốn xóa file chúng ta sử dụng module os và hàm remove()

import os os.remove('new_file.txt')

Check xem file có tồn tại

Khi muốn kiểm tra xem file có tồn tại hay không chúng ta sử dụng phương thức isfile() của module os.

import os if os.path.isfile('new_file.txt'): f = open('new_file.txt') else: print('File không tồn tại.')

Kết luận

Chúng ta đã tìm hiểu về cách xử lý file text trong Python. Bài sau chúng ta sẽ cùng nhau tìm hiểu thêm về cách xử lý file CSV nhé.

Từ khóa » đọc File Text