获取文件类型
with magic.Magic()as m:
res = m.id_filename(file_name)
获取文件编码
with magic.Magic(flags=magic.MAGIC_MIME_ENCODING)as m:
res = m.id_filename(file_name)
windows下的安装与使用
安装
当时我的环境是64位 win10 python2.7
安装magic模块:
pip install python-magic
https://github.com/ahupp/python-magic
安装 Microsoft Visual C++ Compiler for Python 2.7
https://www.microsoft.com/en-us/download/details.aspx?id=44266
安装libmagic:
https://pypi.python.org/pypi/python-libmagic
安装cffi:
这里特别注意版本,我当时提示用得是 pip install cffi==1.7.0 具体根据报错提示
当时最先遇到问题是导入magic出错:>>> import magic
usr/local/lib/python2.7/dist-packages/magic/__pycache__/_cffi__x786d8319xacd6d885.c:156:19: fatal error: magic.h: No such
fileor directorycompilation terminated.
Traceback (most recent calllast):
File"<stdin>", line 1, in <module>
File"/usr/local/lib/python2.7/dist-packages/magic/__init__.py", line 1, in <module>
from . import ffi
File"/usr/local/lib/python2.7/dist-packages/magic/ffi.py", line 27, in <module>
ext_package="magic")
File"/usr/local/lib/python2.7/dist-packages/cffi/api.py", line 339, inverify
lib = self.verifier.load_library()
File"/usr/local/lib/python2.7/dist-packages/cffi/verifier.py", line 74, in load_library
self._compile_module()
File"/usr/local/lib/python2.7/dist-packages/cffi/verifier.py", line 139, in _compile_module
outputfilename = ffiplatform.compile(tmpdir, self.get_extension())
File"/usr/local/lib/python2.7/dist-packages/cffi/ffiplatform.py", line 25, in compile
outputfilename = _build(tmpdir, ext)
File"/usr/local/lib/python2.7/dist-packages/cffi/ffiplatform.py", line 50, in _build
raise VerificationError('%s: %s' % (e.__class__.__name__, e))
cffi.ffiplatform.VerificationError: CompileError: command 'x86_64-linux-gnu-gcc'failedwithexitstatus1
当我根据目录把magic.h放入他所提示目录后又出现更多问题,最后解决的时候也不知道这一个步骤是否有用
最后是通过升级cffi==1.7.0并且安装pip install python-magic-bin后,windows下magic才得以使用
使用
windows下的magic和linux略有不同
获取文件类型
f = magic.Magic()
res = f.from_file(file_name)
获取文件编码类型
f = magic.Magic(mime_encoding=True)
res = f.from_file(file_name)