Python - mecanismo para identificar el tipo de archivo comprimido y descomprimir

Un archivo comprimido se puede clasificar en los siguientes grupos lógicos
a. El sistema operativo en el que está trabajando (* ix, Win) etc.
segundo. Diferentes tipos de algoritmos de compresión (es decir, .zip, .Z, .bz2, .rar, .gzip). Al menos a partir de una lista estándar de archivos comprimidos utilizados en su mayoría.
do. Luego tenemos un mecanismo de bola de alquitrán, donde supongo que no hay compresión. Pero actúa más como una concatenación.

Ahora, si empezamos a abordar el conjunto anterior de archivos comprimidos,
a. La opción (a) sería atendida por Python ya que es un lenguaje independiente de la plataforma.
segundo. La opción (b) y (c) parece tener un problema.

Qué necesito
¿Cómo identifico el tipo de archivo (tipo de compresión) y luego los descomprimo?

Me gusta:

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

etc  

Entonces, la pregunta fundamental es ¿cómo identificamos el algoritmo de compresión basado en el archivo (suponiendo que la extensión no esté provista o sea incorrecta)? ¿Hay alguna forma específica de hacerlo en python?

Respuestas a la pregunta(5)

Su respuesta a la pregunta