Python si lega a libmagic
Tutte le diverse risposte su questo argomento sono molto confuse, quindi spero di dare un po 'più di chiarezza con questa panoramica delle diverse associazioni di libmagic. Precedentemente mammadori ha dato una breve risposta elencando l'opzione disponibile.
libmagic
Quando si determina un tipo mime di file, lo strumento preferito viene semplicemente chiamato filee viene chiamato il suo back-end libmagic. (Vedi la home page del Progetto .) Il progetto è sviluppato in un repository cvs privato, ma c'è un mirror git di sola lettura su github .
Ora questo strumento, che ti servirà se vuoi usare una qualsiasi delle associazioni libmagiche con Python, viene già fornito con le sue stesse associazioni Python chiamate file-magic. Non c'è molto di documentazione dedicato per loro, ma si può sempre avere uno sguardo alla pagina man del c-library: man libmagic. L'utilizzo di base è descritto nel file Leggimi :
import magic
detected = magic.detect_from_filename('magic.py')
print 'Detected MIME type: {}'.format(detected.mime_type)
print 'Detected encoding: {}'.format(detected.encoding)
print 'Detected file type name: {}'.format(detected.name)
Oltre a questo, puoi anche usare la libreria creando un Magicoggetto usando magic.open(flags)come mostrato nel file di esempio .
Sia toivotuo e l'uso ewr2san questi file-magicattacchi inclusi nel filestrumento. Presumono erroneamente che stanno usando il python-magicpacchetto. Questo sembra indicare che se entrambi filee python-magicsono installati, il modulo python si magicriferisce a quello precedente.
python-magic
Questa è la biblioteca di cui Simon Zimmermann parla nella sua risposta e che è anche impiegato da Claude COULOMBE e da Gringo Suave .
filemagic
Nota : questo progetto è stato aggiornato l'ultima volta nel 2013!
Essendo basato sullo stesso c-api, questa libreria ha alcune somiglianze con file-magicincluso in libmagic. Viene menzionato solo da mammadori e nessun'altra risposta lo utilizza.