Bài 5 - Các Phương Thức Làm Việc với File trong Python
Python có thể làm việc với nhiều loại file khác nhau, chủ yếu được phân thành file văn bản (text) và file nhị phân (binary). Các loại file cụ thể mà Python thường xuyên tương tác phụ thuộc vào ứng dụng và mục đích sử dụng.
Các Loại File Phổ Biến Python Thường Xử Lý
1. File Mã Nguồn Python (.py)
- Là file cơ bản nhất, chứa mã lệnh Python.
2. File Văn Bản Thuần Túy (.txt)
- Dùng để lưu trữ dữ liệu văn bản, file cấu hình hoặc log.
- Xử lý bằng các hàm tích hợp như
open()
,read()
,write()
.
3. File CSV (Comma-Separated Values) (.csv)
- Định dạng phổ biến cho dữ liệu dạng bảng.
- Xử lý bằng module
csv
hoặc thư việnpandas
.
4. File JSON (JavaScript Object Notation) (.json)
- Định dạng nhẹ để trao đổi dữ liệu, thường dùng cho cấu hình hoặc dữ liệu web.
- Xử lý bằng module
json
.
5. File XML (Extensible Markup Language) (.xml)
- Định dạng lưu trữ dữ liệu có cấu trúc phân cấp.
- Xử lý bằng
xml.etree.ElementTree
.
6. File Excel (.xlsx, .xls)
- Dữ liệu bảng trong Excel, xử lý bằng
openpyxl
hoặcpandas
.
7. File Nhị Phân (Binary Files)
- Bao gồm hình ảnh, âm thanh hoặc dữ liệu nhị phân tùy chỉnh.
- Xử lý bằng các thư viện chuyên dụng hoặc thao tác trực tiếp với byte.
8. File Cấu Hình (.ini, .yml, .yaml)
- Dùng cho cài đặt ứng dụng, phân tích cú pháp bằng
configparser
hoặcPyYAML
.
Các Thư Viện Chính Để Xử Lý File
Hàm Tích Hợp Sẵn
open()
,read()
,write()
,close()
.
Module Trong Thư Viện Chuẩn
csv
,json
,os
,shutil
,zipfile
.
Thư Viện Bên Thứ Ba
pandas
(phân tích dữ liệu, hỗ trợ CSV/Excel...)openpyxl
(làm việc với Excel)Pillow
(xử lý hình ảnh)
Python cung cấp nhiều công cụ mạnh mẽ để làm việc với các định dạng file khác nhau, giúp lập trình viên dễ dàng đọc, ghi và xử lý dữ liệu theo nhu cầu! 🚀
Các Bước Làm Việc với File
- Mở file (
open()
) - Đọc/Ghi dữ liệu (sử dụng các phương thức)
- Đóng file (
close()
)
1. Mở File
file = open("ten_file.txt", mode="r") # Mở file để đọc (read)
Các chế độ (mode) phổ biến:
"r"
→ Read (mặc định)"w"
→ Write (ghi đè)"a"
→ Append (thêm vào cuối)"r+"
→ Đọc và ghi"b"
→ Binary mode (vd:"rb"
,"wb"
)
Các Phương Thức Đọc File
1. Đọc toàn bộ file (read()
)
python
file = open("example.txt", "r")
content = file.read() # Đọc tất cả nội dung
print(content)
file.close()
2. Đọc từng dòng (readline()
)
file = open("example.txt", "r")
line1 = file.readline() # Đọc dòng đầu tiên
line2 = file.readline() # Đọc dòng tiếp theo
print(line1, line2) file.close()
3. Đọc tất cả các dòng (readlines()
)
file = open("example.txt", "r")
lines = file.readlines() # Trả về list các dòng
print(lines) # Ví dụ: ['dòng 1\n', 'dòng 2\n'] file.close()
4. Duyệt file theo từng dòng (Khuyên dùng)
with open("example.txt", "r") as file:
for line in file:
print(line.strip()) # strip() để bỏ ký tự xuống dòng
Ưu điểm: Tự động đóng file khi thoát khối with
.
Các Phương Thức Ghi File
1. Ghi đè file (write()
)
with open("output.txt", "w") as file:
file.write("Xin chào Python!\n")
file.write("Đây là dòng thứ hai.")
2. Ghi thêm vào cuối file (append mode
)
with open("output.txt", "a") as file:
file.write("\nThêm dòng mới vào cuối file.")
3. Ghi nhiều dòng (writelines()
)
lines = ["Line 1\n", "Line 2\n", "Line 3\n"]
with open("output.txt", "w") as file:
file.writelines(lines)
Các Phương Thức Quan Trọng Khác
Phương thức | Mô tả |
---|---|
file.close() | Đóng file (luôn dùng sau khi làm việc xong) |
file.seek(offset) | Di chuyển con trỏ file đến vị trí offset |
file.tell() | Trả về vị trí hiện tại của con trỏ file |
file.flush() | Đẩy dữ liệu từ bộ đệm xuống file ngay lập tức |
Ví dụ sử dụng seek()
và tell()
:
with open("example.txt", "r+") as file:
print("Vị trí ban đầu:", file.tell()) # Output: 0
file.seek(10) # Nhảy đến ký tự thứ 10
print("Vị trí mới:", file.tell()) # Output: 10
content = file.read(5) # Đọc 5 ký tự từ vị trí hiện tại
print(content)
Xử Lý File Binary
# Ghi file binary
with open("data.bin", "wb") as file:
file.write(b"\x48\x65\x6C\x6C\x6F") # Ghi chuỗi byte
# Đọc file binary
with open("data.bin", "rb") as file:
data = file.read()
print(data) # Output: b'Hello'
Bài Tập Thực Hành
Bài 1: Đếm số từ trong file text.txt
with open("text.txt", "r") as file:
content = file.read()
word_count = len(content.split())
print("Số từ:", word_count)
Bài 2: Sao chép nội dung file
with open("source.txt", "r") as src, open("dest.txt", "w") as dest:
dest.write(src.read())
Bài 3: Ghi log hệ thống vào file
import datetime
with open("system_log.txt", "a") as file:
file.write(f"{datetime.datetime.now()}: User logged in\n")
Lưu ý Quan Trọng
- Luôn đóng file sau khi dùng (hoặc sử dụng
with
). Kiểm tra file tồn tại trước khi đọc:
import os
if os.path.exists("file.txt"):
# Xử lý file
Xử lý ngoại lệ khi làm việc với file:
try:
with open("file.txt", "r") as file:
content = file.read()
except FileNotFoundError:
print("File không tồn tại!")
Tổng Kết
- Sử dụng
open()
với các mode phù hợp (r
,w
,a
, ...). - Ưu tiên dùng
with
để tự động đóng file. - Các phương thức đọc:
read()
,readline()
,readlines()
. - Các phương thức ghi:
write()
,writelines()
.
Áp dụng ngay để đọc/ghi dữ liệu trong các dự án thực tế! 🚀