简介
python-magic是libmagic文件类型识别库的python接口。
libmagic识别文件类型的方式,是通过检查文件头部的一些字节,然后与预设的文件类型列表进行比对。这比简单地检查文件后缀名的方式靠谱多了。
Unix命令行中的file <文件路径>
命令,就是通过该方式实现功能的。
安装
Linux下安装:
pip install python-magic
OSX下安装(需要先安装libmagic依赖项):
brew install libmagic
pip install python-magic
Windows下安装:
pip install python-magic-bin 0.4.14
示例
>>> import magic >>> magic.from_file("testdata/test.pdf") 'PDF document, version 1.2' >>> magic.from_file("testdata/test.pdf", mime=True) 'application/pdf' >>> magic.from_buffer(open("testdata/test.pdf", "rb").read(1024)) 'PDF document, version 1.2' >>> magic.from_file('index.md') 'UTF-8 Unicode text'
|
可以从URL中直接判断资源类型:
>>> import requests >>> import magic >>> magic.from_buffer(requests.get('https://www.baidu.com/img/bd_logo1.png?where=super', stream=True).raw.read(1024)) 'PNG image data, 540 x 258, 8-bit colormap, non-interlaced' >>> magic.from_buffer(requests.get('https://www.baidu.com/img/bd_logo1.png?where=super', stream=True).raw.read(1024), mime=True) 'image/png'
|
上面的例子中可以看到,通过读取图片流的一小段字节,就可以判断图片的尺寸,不需要下载整张图片。
More
文档与更多示例参考:
其他扩展
Python的标准库中,imghdr可以识别图片文件的类型。
>>> import imghdr >>> imghdr.what('bass.gif') 'gif' >>> imghdr.what(None, h=open('bass.gif', 'rb').read(1024)) 'gif'
|