python-magic is a python interface to the libmagic file type
identification library. libmagic identifies file types by checking
their headers according to a predefined list of file types. This
functionality is exposed to the command line by the Unix command
file
.
Important note this is a modified version of the library, and is not guaranteed to be 100% compatible with the old library, although some work has been done to support retro-compatibility.
There are three ways to use the library:
- Directly import & call the (wrapped) underlying C methods
- Use the
Magic
class (the object-oriented version of the C library) - Use the
Magic2
(Magic squared) library:
>>> from magic import Magic2
>>> Magic2.from_file("testdata/test.pdf").description
'PDF document, version 1.2'
>>> Magic2.from_buffer(open("testdata/test.pdf").read(1024)).description
'PDF document, version 1.2'
>>> Magic2.from_file("testdata/test.pdf").mimetype
'application/pdf'
The current stable version of python-magic is available on pypi and
can be installed by running pip install python-magic
.
Other sources:
The library has been tested compatible (a.k.a. full test suite running) with the following Python versions:
- CPython 2.6.4
- CPython 2.7.3
- CPython 3.3.0
- PyPy 1.9.0 (2.7.2)
It is known not to work on:
- Python < 2.6
- Python 3.0
On Windows, you need to download and save the following libraries under
C:\Windows\System32
:
regex2.dll
from sourceforge.net/projects/gnuwin32/files/regex/zlib1.dll
from sourceforge.net/projects/gnuwin32/files/zlib/magic1.dll
from sourceforge.net/projects/gnuwin32/files/file/
To run the test cases, simply run:
python setup.py test
or, if you prefer:
python -m unittest discover -v
Written by Adam Hupp in 2001 for a project that never got off the ground. It origionally used SWIG for the C library bindings, but switched to ctypes once that was part of the python standard library.
You can contact me via my website or github.
Thanks to these folks on github who submitted features and bugfixes.
- Amit Sethi
- bigben87
- fallgesetz
- FlaPer87
- lukenowak
- NicolasDelaby
- [email protected]
- SimpleSeb
- tehmaze
- Samuele Santi
python-magic is distributed under the PSF License.