Bạn có thể muốn phát hiện kiểu MIME của tệp tải lên bất kể phần mở rộng tệp là gì và điều đó thường được thực hiện bằng cách đọc tiêu đề tệp để phát hiện "số ma thuật" hoặc các mẫu bit khác cho biết bản chất thực của tệp. Thường thì các tệp văn bản là dạng chữ hoa, không có tiêu đề nào được phát hiện và x byte đầu tiên là ASCII hoặc Unicode có thể in được.
Mặc dù đó là một chút khó khăn để đi sâu vào, nhưng có một vài thư viện Python sẽ làm điều đó cho bạn. Ví dụ: https://github.com/ahupp/python-magic sẽ phù hợp với nhu cầu của bạn bằng cách chỉ cần suy ra kiểu kịch câm cho mỗi nội dung tệp, sau đó bạn sẽ so khớp với kiểu bạn muốn chấp nhận.
Bạn có thể tìm thấy một bộ mã mẫu có liên quan cụ thể cho nhu cầu của bạn tại đây: https://stackoverflow.com / a / 28306825/7341881
Chỉnh sửa:Giải pháp của Eddie là chức năng tương đương; python-magic bao bọc libmagic, là thứ mà lệnh "tệp" gốc của Linux khai thác vào. Nếu bạn quyết định đi theo con đường xử lý con, hãy cẩn thận hơn nữa là bạn không tạo ra lỗ hổng bảo mật bằng cách khử trùng đầu vào của người dùng không đúng cách (ví dụ:tên tệp được cung cấp của người dùng). Điều này có thể dẫn đến một cuộc tấn công cấp quyền truy cập tùy ý vào môi trường thời gian chạy của máy chủ của bạn.