判断文件类型在开发中非常常见的需求,怎样才能准确的判断文件类型呢?首先大家想到的是文件的后缀,但是非常遗憾的是这种方法是非常不靠谱的,因为文件的后缀是可以随意更改的,而python中有个小插件可以实现,下面我们就来详细探讨下
filetype.py
Small and dependency free Python package to infer file type and
MIME type checking the
This is a Python port from filetype Go package. Works in
Python
一个小巧自由开放Python开发包,主要用来获得文件类型。包要求Python 3.
功能特色
•简单友好的API
•支持宽范围文件类型
•提供文件扩展名和MIME类型判断
•文件的MIME类型扩展新增
•通过文件(图像、视频、音频…)简单分析
•可插拔:添加新的自定义类型的匹配
•快,即使处理大文件
•只需要前261个字节表示的最大文件头,这样你就可以通过一个单字节
•依赖自由(只是Python代码,没有C的扩展,没有libmagic绑定)
•跨平台文件识别
安装
pip install filetype
API
详情请查看 annotated API reference .
实例
简单的文件类型识别
支持类型
图片
• jpg
• png
• gif
• webp
• cr2
• tif
• bmp
• jxr
• psd
• ico
视频
• mp4
• m4v
• mkv
• webm
• mov
• avi
• wmv
• mpg
• flv
音频
• mid
• mp3
• m4a
• ogg
• flac
• wav
• amr
资料库
• epub
• zip
• tar
• rar
• gz
• bz2
• 7z
• xz
• pdf
• exe
• swf
• rtf
• eot
• ps
• sqlite
• nes
• crx
• cab
• deb
• ar
• Z
• lz
字体
• woff
• woff2
• ttf
• otf
基准测试
使用链接中的文件进行测试,你可以点击获得到它: real files .
Environment: OSX x64 i7 2.7 Ghz
------------------------------------------------------------------------------------------
benchmark: 7 tests
------------------------------------------------------------------------------------------
Name (time in
ns)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test_infer_image_from_bytes
test_infer_audio_from_bytes
test_infer_video_from_bytes