Prawdopodobnie chcesz wykryć typ MIME przesyłanego pliku niezależnie od rozszerzenia pliku, a często robi się to poprzez odczytanie nagłówka pliku w celu wykrycia „magicznych liczb” lub innych wzorców bitowych wskazujących prawdziwą naturę pliku. Często pliki tekstowe są przypadkiem brzegowym, w którym nie wykryto nagłówka, a pierwsze x bajtów można wydrukować w formacie ASCII lub Unicode.
Chociaż jest to trochę króliczej nory, w której można się zanurzyć, jest kilka bibliotek Pythona, które zrobią to za Ciebie. Na przykład:https://github.com/ahupp/python-magic będzie działać zgodnie z Twoimi potrzebami, po prostu wywnioskując typ MIME na podstawie zawartości pliku, który następnie dopasujesz do typów, które chcesz zaakceptować.
Nieco powiązany zestaw przykładowych kodów dostosowanych do Twoich potrzeb można znaleźć tutaj:https://stackoverflow.com /a/28306825/7341881
Edycja:rozwiązanie Eddiego jest równoważne funkcjonalności; python-magic opakowuje libmagic, do którego wykorzystuje natywne polecenie „plik” Linuksa. Jeśli zdecydujesz się przejść na ścieżkę podprocesu, bądź bardzo ostrożny, aby nie stworzyć luki w zabezpieczeniach przez niewłaściwą dezynfekcję danych wejściowych użytkownika (np. podana przez użytkownika nazwa pliku). Może to doprowadzić do ataku dającego arbitralny dostęp do środowiska wykonawczego serwera.