Kiểm tra file tồn tại trong Python: os, pathlib, glob

1. Lý do kiểm tra sự tồn tại của tệp trong Python

Giới thiệu

Để tăng độ ổn định của chương trình, việc kiểm tra sự tồn tại của tệp là không thể thiếu. Ví dụ, khi đọc hoặc ghi dữ liệu, nếu tệp đích không tồn tại sẽ xảy ra lỗi và việc thực thi chương trình sẽ bị gián đoạn. Trong Python, có thể kiểm tra sự tồn tại của tệp theo nhiều cách, nhưng việc chọn phương pháp tối ưu tùy theo kịch bản cụ thể là quan trọng. Trong bài viết này, chúng tôi giới thiệu các cách kiểm tra tệp bằng các mô-đun os, pathlibglob, đồng thời giải thích ưu điểm của từng phương pháp。

2. Phương pháp cơ bản: mô-đun os

Cách sử dụng os.path.exists()

os.path.exists() được dùng để kiểm tra xem đường dẫn được chỉ định có tồn tại như một tệp hoặc thư mục hay không. Hàm này trả về True nếu tồn tại, và False nếu không.
import os

if os.path.exists("example.txt"):
    print("Tệp tồn tại")
else:
    print("Tệp không tồn tại")
Đoạn mã này kiểm tra xem example.txt có tồn tại hay không và hiển thị thông báo tương ứng với kết quả. os.path.exists() là một phương pháp tổng quát có thể kiểm tra cả tệp và thư mục.

Phân biệt cách dùng os.path.isfile() và os.path.isdir()

os.path.exists() không phân biệt là tệp hay thư mục, nhưng bằng cách dùng os.path.isfile()os.path.isdir(), bạn có thể xác định đối tượng là tệp hay thư mục.
if os.path.isfile("example.txt"):
    print("Đây là tệp")
elif os.path.isdir("example.txt"):
    print("Đây là thư mục")
else:
    print("Không tồn tại")
Như vậy, sau khi kiểm tra sự tồn tại của đối tượng, việc phân biệt là tệp hay thư mục cho phép bạn thực hiện các thao tác chi tiết hơn。

3. Phần nâng cao: mô-đun pathlib

Sử dụng phương thức Path.exists()

Trong pathlib, bạn có thể dùng phương thức Path.exists() để kiểm tra sự tồn tại của tệp hoặc thư mục. Tương tự như os.path.exists(), nó trả về True hoặc False, nhưng mã sẽ gọn gàng hơn.
from pathlib import Path

file_path = Path("example.txt")

if file_path.exists():
    print("Tệp tồn tại")
else:
    print("Tệp không tồn tại")
Với cách này, do xử lý đường dẫn tệp như một đối tượng Path, mã sẽ mang tính hướng đối tượng và dễ bảo trì hơn。

Path.is_file() và Path.is_dir()

Trong pathlib cũng có các phương thức is_file()is_dir(). Nhờ đó, bạn có thể dễ dàng phân biệt là tệp hay thư mục。
if file_path.is_file():
    print("Đây là tệp")
elif file_path.is_dir():
    print("Đây là thư mục")
Như vậy, khi sử dụng pathlib, bạn không chỉ kiểm tra sự tồn tại của tệp mà còn dễ dàng xác định đối tượng là tệp hay thư mục。

Tình huống thực tế

pathlib đặc biệt hữu ích trong các dự án thao tác với nhiều thư mục và tệp. Nó cho phép mô tả các thao tác đường dẫn phức tạp một cách đơn giản và chạy cùng một mã trên các nền tảng khác nhau, nên cũng rất phù hợp cho phát triển đa nền tảng.

4. Kiểm tra sự tồn tại của tệp trong Python: Cách sử dụng mô-đun glob

So khớp mẫu với glob

glob là mô-đun cho phép tìm kiếm tệp dựa trên mẫu của tên tệp hoặc đường dẫn, nên rất tiện khi bạn muốn kiểm tra cùng lúc các tệp khớp với điều kiện cụ thể. Đặc biệt hiệu quả trong các kịch bản xử lý số lượng lớn tệp.
import glob

files = glob.glob('*.txt')

if files:
    print("Có tệp văn bản")
else:
    print("Không có tệp văn bản")
Trong đoạn mã này, tất cả các tệp .txt có trong thư mục hiện tại được lấy dưới dạng danh sách để kiểm tra sự tồn tại. Vì có thể tìm kiếm hàng loạt tệp dựa trên định dạng hoặc mẫu cụ thể nên rất hữu ích cho các tác vụ như quản lý tệp sao lưu.

Kịch bản thực tế

glob phù hợp khi cần thao tác với số lượng lớn tệp và thư mục hoặc khi muốn xử lý hiệu quả các tệp khớp với tên hay phần mở rộng cụ thể. Chẳng hạn, rất thích hợp cho các tác vụ kiểm tra và quản lý định kỳ các tệp nhật ký và tệp tạm.
年収訴求

5. Thao tác tệp an toàn bằng xử lý ngoại lệ

Để ngăn lỗi khi tệp không tồn tại, việc sử dụng xử lý ngoại lệ cũng rất quan trọng. Bằng cách dùng cú pháp try-except, bạn có thể ngăn việc thực thi chương trình bị dừng do lỗi và hiển thị thông báo lỗi cho người dùng.
try:
    with open("example.txt") as f:
        print(f.read())
except FileNotFoundError:
    print("Tệp không tồn tại")
Trong đoạn mã này, khi tệp không tồn tại, nó bắt FileNotFoundError và hiển thị thông báo lỗi mà không làm chương trình bị sập. Nhờ đó, trải nghiệm người dùng được cải thiện và độ ổn định của chương trình tăng lên.

6. Tổng kết

Để kiểm tra sự tồn tại của tệp trong Python, có nhiều phương pháp như mô-đun os, mô-đun pathlib, mô-đun glob, v.v. Mỗi phương pháp đều có ưu điểm tùy theo kịch bản sử dụng, vì vậy việc lựa chọn và sử dụng đúng cách là rất quan trọng。
  • Đối với việc kiểm tra sự tồn tại đơn giản, os.path.exists() là phù hợp nhất.
  • Khi cần thao tác đường dẫn phức tạp hoặc hỗ trợ đa nền tảng, pathlib rất hữu ích.
  • Đối với tìm kiếm dựa trên mẫu cụ thể, mô-đun glob rất hiệu quả.
Hiểu và sử dụng đúng các phương pháp này sẽ giúp bạn thao tác tệp bằng Python hiệu quả và an toàn. Là bước tiếp theo, bạn nên tiếp tục học về đọc và ghi tệp, xóa và sao chép。