2009-12-29 23 views
12

Chcę mieć różne zachowanie w skrypcie python, w zależności od typu pliku. Nie mogę użyć rozszerzenia nazwy pliku, ponieważ może nie być obecne lub wprowadzać w błąd. Mógłbym zadzwonić do narzędzia file i przeanalizować wyjście, ale wolałbym użyć wbudowanego pytona do przenoszenia.Czy istnieje odpowiednik pythonowego narzędzia "file" unix?

Czy w pytonie jest coś, co używa heurystyki do wyprowadzenia typu pliku z jego zawartości?

Odpowiedz

9

Prawdopodobnie inni również. "magic" to magiczne słowo kluczowe do wyszukiwania. ;-)

+0

'libmagic' nie jest idealny dla wszystkich plików. Patrzy na "magiczną liczbę" w nagłówku pliku. Pliki tekstowe, takie jak kod źródłowy, nie mają nagłówków, a libmagic musi uciekać się do dzikiego odgadywania ... może być bardzo źle z nimi. –

+1

Takie jest niebezpieczeństwo wszystkich podejść do podsłuchiwania treści. Często liczba "dopuszczalnych" typów plików jest mniejsza niż lista znana przez libmagic, w takim przypadku sniffowanie aplikacji na poziomie aplikacji ad-hoc może być lepszym rozwiązaniem, ale w ogólnym przypadku niewiele można z tym zrobić. – bobince

+4

libmagic jest tym, z jakiego pliku korzysta, więc bardzo trudno znaleźć bliższe dopasowanie do pliku. –

Powiązane problemy