Pravděpodobně budete chtít zjistit typ MIME uploadu bez ohledu na příponu souboru, a to se často provádí čtením záhlaví souboru, aby se zjistila „magická čísla“ nebo jiné bitové vzory označující skutečnou povahu souboru. Textové soubory jsou často okrajovým případem, kdy není detekováno žádné záhlaví a prvních x bajtů je tisknutelných v ASCII nebo Unicode.
I když je to trochu králičí nora, do které se můžete ponořit, existuje několik knihoven Pythonu, které to udělají za vás. Například:https://github.com/ahupp/python-magic bude fungovat pro vaše potřeby jednoduchým odvozením typu mime podle obsahu souboru, který pak porovnáte s typy, které chcete přijmout.
Poněkud související sadu příkladů kódu specifických pro vaše potřeby lze nalézt zde:https://stackoverflow.com /a/28306825/7341881
Edit:Eddieho řešení je funkčně ekvivalentní; python-magic zabalí libmagic, což je to, na co ťuká nativní příkaz "soubor" Linuxu. Pokud se rozhodnete jít cestou podprocesu, buďte zvlášť opatrní, abyste nevytvořili zranitelnost zabezpečení nesprávnou dezinfekcí uživatelského vstupu (např. uživatelem poskytnutý název souboru). To by mohlo vést k útoku poskytujícímu libovolný přístup k běhovému prostředí vašeho serveru.