Cách 1: Module chuẩn mimetypes — đoán dựa trên extension (không đáng tin cậy 100%).
mimetypes
import mimetypes
mime_type, encoding = mimetypes.guess_type('my_file.txt')
print(mime_type) # 'text/plain'
print(encoding) # None
Có thể thêm mapping tùy chỉnh:
mimetypes.add_type('application/x-myformat', '.myext')
Cách 2: python-magic (đúng hơn, đọc magic bytes)
pip install python-magic # Linux: libmagic-dev; Windows: python-magic-bin
import magic
mime = magic.Magic(mime=True)
print(mime.from_file('my_file.txt')) # 'text/plain'
print(mime.from_buffer(b'%PDF...')) # 'application/pdf'
So sánh
| Tiêu chí | mimetypes | python-magic |
|---|---|---|
| Độ tin cậy | Dựa trên extension | Đọc magic bytes (header) |
| Dependency | Built-in | Cần libmagic system lib |
| Tốc độ | Rất nhanh | Chậm hơn (I/O) |