Python - mechanizm identyfikowania skompresowanego typu pliku i dekompresji

Skompresowany plik można sklasyfikować poniżej grup logicznych
za. System operacyjny, nad którym pracujesz (* ix, Win) itp.
b. Różne typy algorytmów kompresji (np. .Zip, .Z, .bz2, .rar, .gzip). Co najmniej ze standardowej listy najczęściej używanych skompresowanych plików.
do. Potem mamy mechanizm kul smołowych - gdzie, jak sądzę, nie ma kompresji. Ale działa bardziej jak konkatenacja.

Teraz, jeśli zaczniemy adresować powyższy zestaw skompresowanych plików,
za. Opcja a) byłaby zadbana przez pytona, ponieważ jest językiem niezależnym od platformy.
b. Opcja (b) i (c) wydaje się mieć problem.

Czego potrzebuję
Jak zidentyfikować typ pliku (typ kompresji), a następnie UN-kompresować je?

Lubić:

fileType = getFileType(fileName)  
switch(fileType):  
case .rar:  unrar....
case .zip:  unzip....

etc  

Podstawowe pytanie brzmi: w jaki sposób zidentyfikować algorytm kompresji oparty na pliku (zakładając, że rozszerzenie nie jest podane lub niepoprawne)? Czy jest jakiś konkretny sposób, aby to zrobić w python?

questionAnswers(5)

yourAnswerToTheQuestion