2009-12-29 12 views
12

Voglio avere un comportamento diverso in uno script python, a seconda del tipo di file. Non riesco a utilizzare l'estensione del nome file perché potrebbe non essere presente o fuorviante. Potrei chiamare l'utility file e analizzare l'output, ma preferirei usare un python integrato per la portabilità.Esiste un equivalente python dell'utilità "file" di unix?

Quindi c'è qualcosa in Python che utilizza l'euristica per dedurre il tipo del file dal suo contenuto?

risposta

9

Probabilmente altri pure. "magia" è la parola chiave magica da cercare. ;-)

+0

'libmagic' non è perfetto per tutti i file. Guarda il "numero magico" nell'intestazione di un file. I file di testo, come il codice sorgente, non hanno intestazioni e libmagic deve ricorrere a congetture selvagge ... può essere molto sbagliato su di loro. –

+1

Tale è il pericolo di tutti gli approcci di content-sniffing. Spesso il numero di tipi di file 'accettabili' è inferiore alla lista nota da libmagic, nel qual caso lo sniffing ad-hoc a livello di app può essere una scelta migliore, ma nel caso generale non c'è molto che si possa fare a riguardo. – bobince

+4

libmagic è ciò che il file usa, quindi è molto, molto difficile trovare una corrispondenza più stretta con il file. –

Problemi correlati