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 Web框架Flask中使用百度云存储BCS实例
Feb 08 Python
Python比较两个图片相似度的方法
Mar 13 Python
python连接MySQL数据库实例分析
May 12 Python
python difflib模块示例讲解
Sep 13 Python
Python扩展内置类型详解
Mar 26 Python
对Python 内建函数和保留字详解
Oct 15 Python
Python 利用pydub库操作音频文件的方法
Jan 09 Python
python3实现斐波那契数列(4种方法)
Jul 15 Python
Python 函数绘图及函数图像微分与积分
Nov 20 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 Python
C站最全Python标准库总结,你想要的都在这里
Jul 03 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中的traits实现代码复用使用实例
2015/05/13 PHP
Yii框架表单模型和验证用法
2016/05/20 PHP
克隆javascript对象的三个方法小结
2011/01/12 Javascript
jquery 图片上传按比例预览插件集合
2011/05/28 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
2016/08/23 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
p5.js入门教程和基本形状绘制
2018/03/15 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
Python的标准模块包json详解
2017/03/13 Python
Python实现识别手写数字 简易图片存储管理系统
2018/01/29 Python
Python Gitlab Api 使用方法
2019/08/28 Python
如何使用python写截屏小工具
2020/09/29 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
html5定制表单_动力节点Java学院整理
2017/07/11 HTML / CSS
瑞典首都斯德哥尔摩的多元奢侈时尚品牌:Acne Studios
2017/07/09 全球购物
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
北京某公司的.net笔试题
2014/03/20 面试题
青年文明号事迹材料
2014/01/18 职场文书
故宫的导游词
2015/01/31 职场文书
如何写通讯稿
2015/07/22 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书