Python使用filetype精确判断文件类型


Posted in Python onJuly 02, 2017

filetype.py

Small and dependency free Python package to infer file type and MIME type checking the  magic numbers signature of a file or buffer.

This is a Python port from filetype Go package. Works in Python  +3 .

一个小巧自由开放Python开发包,主要用来获得文件类型。包要求Python 3.+

功能特色

•简单友好的API
•支持宽范围文件类型
•提供文件扩展名和MIME类型判断
•文件的MIME类型扩展新增
•通过文件(图像、视频、音频…)简单分析
•可插拔:添加新的自定义类型的匹配
•快,即使处理大文件
•只需要前261个字节表示的最大文件头,这样你就可以通过一个单字节
•依赖自由(只是Python代码,没有C的扩展,没有libmagic绑定)
•跨平台文件识别

安装

pip install filetype

API

详情请查看 annotated API reference .

实例

简单的文件类型识别

import filetype
 
def main():
 kind = filetype.guess('tests/fixtures/sample.jpg')
 if kind is None:
  print('Cannot guess file type!')
  return
 
 print('File extension: %s' % kind.extension)
 print('File MIME type: %s' % kind.mime)
 
if __name__ == '__main__':
 main()

支持类型

图片

• jpg  ?  image/jpeg
• png  ?  image/png
• gif  ?  image/gif
• webp  ?  image/webp
• cr2  ?  image/x-canon-cr2
• tif  ?  image/tiff
• bmp  ?  image/bmp
• jxr  ?  image/vnd.ms-photo
• psd  ?  image/vnd.adobe.photoshop
• ico  ?  image/x-icon

视频

• mp4  ?  video/mp4
• m4v  ?  video/x-m4v
• mkv  ?  video/x-matroska
• webm  ?  video/webm
• mov  ?  video/quicktime
• avi  ?  video/x-msvideo
• wmv  ?  video/x-ms-wmv
• mpg  ?  video/mpeg
• flv  ?  video/x-flv

音频

• mid  ?  audio/midi
• mp3  ?  audio/mpeg
• m4a  ?  audio/m4a
• ogg  ?  audio/ogg
• flac  ?  audio/x-flac
• wav  ?  audio/x-wav
• amr  ?  audio/amr

资料库

• epub  ?  application/epub+zip
• zip  ?  application/zip
• tar  ?  application/x-tar
• rar  ?  application/x-rar-compressed
• gz  ?  application/gzip
• bz2  ?  application/x-bzip2
• 7z  ?  application/x-7z-compressed
• xz  ?  application/x-xz
• pdf  ?  application/pdf
• exe  ?  application/x-msdownload
• swf  ?  application/x-shockwave-flash
• rtf  ?  application/rtf
• eot  ?  application/octet-stream
• ps  ?  application/postscript
• sqlite  ?  application/x-sqlite3
• nes  ?  application/x-nintendo-nes-rom
• crx  ?  application/x-google-chrome-extension
• cab  ?  application/vnd.ms-cab-compressed
• deb  ?  application/x-deb
• ar  ?  application/x-unix-archive
• Z  ?  application/x-compress
• lz  ?  application/x-lzip

字体

• woff  ?  application/font-woff
• woff2  ?  application/font-woff
• ttf  ?  application/font-sfnt
• otf  ?  application/font-sfnt

基准测试

使用链接中的文件进行测试,你可以点击获得到它: real files .

Environment: OSX x64 i7 2.7 Ghz
------------------------------------------------------------------------------------------ benchmark: 7 tests ------------------------------------------------------------------------------------------
Name (time in ns)                       Min                     Max                   Mean                StdDev                 Median                   IQR            Outliers(*)  Rounds  Iterations
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test_infer_image_from_bytes        357.6279 (1.0)       29,166.5395 (1.0)       1,642.3360 (1.0)        380.9934 (1.0)       1,509.9843 (1.0)        158.9457 (1.0)       9095;13752  102301           6
test_infer_audio_from_bytes        953.6743 (2.67)      96,082.6874 (3.29)     16,534.5880 (10.07)    3,002.1143 (7.88)     15,974.0448 (10.58)      953.6743 (6.00)       4514;6051   41528           1
test_infer_video_from_bytes     13,828.2776 (38.67)    272,989.2731 (9.36)     16,151.3144 (9.83)     3,361.2320 (8.82)     15,020.3705 (9.95)       953.6743 (6.00)       2522;2887   22193           1
test_infer_image_from_disk      15,974.0448 (44.67)    108,957.2906 (3.74)     18,621.0844 (11.34)    3,895.4441 (10.22)    17,166.1377 (11.37)    1,192.0929 (7.50)       1528;1804   10206           1
test_infer_video_from_disk      23,841.8579 (66.67)    229,120.2545 (7.86)     28,691.3476 (17.47)    6,242.9901 (16.39)    25,987.6251 (17.21)    4,053.1158 (25.50)      1987;1247   15651           1
test_infer_zip_from_disk        26,941.2994 (75.33)    230,073.9288 (7.89)     32,123.3861 (19.56)    7,524.4988 (19.75)    29,087.0667 (19.26)    4,768.3716 (30.00)      1349;1292   16132           1
test_infer_tar_from_disk        33,855.4382 (94.67)    164,031.9824 (5.62)     36,884.4401 (22.46)    4,489.4443 (11.78)    36,001.2054 (23.84)      953.6743 (6.00)       1036;1828   14666           1
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Python 相关文章推荐
详解使用Python处理文件目录的相关方法
Oct 16 Python
python中根据字符串调用函数的实现方法
Jun 12 Python
Python列出一个文件夹及其子目录的所有文件
Jun 30 Python
python制作websocket服务器实例分享
Nov 20 Python
Python书单 不将就
Jul 11 Python
python-opencv 将连续图片写成视频格式的方法
Jan 08 Python
python虚拟环境完美部署教程
Aug 06 Python
Python利用PyExecJS库执行JS函数的案例分析
Dec 18 Python
tensorflow 实现打印pb模型的所有节点
Jan 23 Python
Python计算公交发车时间的完整代码
Feb 12 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
Jun 03 Python
Python简易开发之制作计算器
Apr 28 Python
使用python实现tcp自动重连
Jul 02 #Python
详解python3中socket套接字的编码问题解决
Jul 01 #Python
详解Python中for循环是如何工作的
Jun 30 #Python
python 连接sqlite及简单操作
Jun 30 #Python
利用Python破解斗地主残局详解
Jun 30 #Python
Python实现的文本编辑器功能示例
Jun 30 #Python
Python构建XML树结构的方法示例
Jun 30 #Python
You might like
php简单静态页生成过程
2008/03/27 PHP
PHP 时间日期操作实战
2011/08/26 PHP
Yii框架表单模型和验证用法
2016/05/20 PHP
一些技巧性实用js代码小结
2009/10/14 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
jQuery实现平滑滚动到指定锚点的方法
2015/03/20 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
jquery实现键盘左右翻页特效
2015/04/30 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
2015/08/30 Javascript
JavaScript静态作用域和动态作用域实例详解
2019/06/17 Javascript
Node绑定全局TraceID的实现方法
2019/11/14 Javascript
openlayers 3实现车辆轨迹回放
2020/09/24 Javascript
原生js实现自定义消息提示框
2020/11/19 Javascript
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
用Python给文本创立向量空间模型的教程
2015/04/23 Python
python3设计模式之简单工厂模式
2017/10/17 Python
python+opencv识别图片中的圆形
2020/03/25 Python
关于python3中setup.py小概念解析
2019/08/22 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
matplotlib教程——强大的python作图工具库
2020/10/15 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
2013/01/30 HTML / CSS
美国女孩服装购物网站:Justice
2017/03/04 全球购物
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
军训心得体会
2013/12/31 职场文书
信息专业大学生自我评价分享
2014/01/17 职场文书
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
荷叶母亲教学反思
2014/04/30 职场文书
质量主管工作职责
2014/09/26 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
人事行政主管岗位职责
2015/04/09 职场文书
药品开票员岗位职责
2015/04/15 职场文书
AJAX学习笔记
2021/05/18 Javascript
无线电通信名词解释
2022/02/18 无线电
教你部署vue项目到docker
2022/04/05 Vue.js