Python使用filetype精确判断文件类型
判断文件类型在开发中非常常见的需求,怎样才能准确的判断文件类型呢?首先大家想到的是文件的后缀,但是非常遗憾的是这种方法是非常不靠谱的,因为文件的后缀是可以随意更改的,而python中有个小插件可以实现,下面我们就来详细探讨下
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 .
实例
简单的文件类型识别
支持类型
图片
• 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
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
最近我发现一个绝招,用DeepSeek AI处理Excel数据简直太爽了!处理速度嘎嘎快! 平常一整天的表格处理工作,现在只要三步就能搞 ...
2025-04-01你是否被统计学复杂的理论和晦涩的公式劝退过?别担心,“山有木兮:统计学极简入门(Python)” 将为你一一化解这些难题。课程 ...
2025-03-31在电商、零售、甚至内容付费业务中,你真的了解你的客户吗? 有些客户下了一两次单就消失了,有些人每个月都回购,有些人曾经是 ...
2025-03-31在数字化浪潮中,数据驱动决策已成为企业发展的核心竞争力,数据分析人才的需求持续飙升。世界经济论坛发布的《未来就业报告》, ...
2025-03-28你有没有遇到过这样的情况?流量进来了,转化率却不高,辛辛苦苦拉来的用户,最后大部分都悄无声息地离开了,这时候漏斗分析就非 ...
2025-03-27TensorFlow Datasets(TFDS)是一个用于下载、管理和预处理机器学习数据集的库。它提供了易于使用的API,允许用户从现有集合中 ...
2025-03-26"不谋全局者,不足谋一域。"在数据驱动的商业时代,战略级数据分析能力已成为职场核心竞争力。《CDA二级教材:商业策略数据分析 ...
2025-03-26当你在某宝刷到【猜你喜欢】时,当抖音精准推来你的梦中情猫时,当美团外卖弹窗刚好是你想吃的火锅店…… 恭喜你,你正在被用户 ...
2025-03-26当面试官问起随机森林时,他到底在考察什么? ""请解释随机森林的原理""——这是数据分析岗位面试中的经典问题。但你可能不知道 ...
2025-03-25在数字化浪潮席卷的当下,数据俨然成为企业的命脉,贯穿于业务运作的各个环节。从线上到线下,从平台的交易数据,到门店的运营 ...
2025-03-25在互联网和移动应用领域,DAU(日活跃用户数)是一个耳熟能详的指标。无论是产品经理、运营,还是数据分析师,DAU都是衡量产品 ...
2025-03-24ABtest做的好,产品优化效果差不了!可见ABtest在评估优化策略的效果方面地位还是很高的,那么如何在业务中应用ABtest? 结合企业 ...
2025-03-21在企业数据分析中,指标体系是至关重要的工具。不仅帮助企业统一数据标准、提升数据质量,还能为业务决策提供有力支持。本文将围 ...
2025-03-20解锁数据分析师高薪密码,CDA 脱产就业班助你逆袭! 在数字化浪潮中,数据驱动决策已成为企业发展的核心竞争力,数据分析人才的 ...
2025-03-19在 MySQL 数据库中,查询一张表但是不包含某个字段可以通过以下两种方法实现:使用 SELECT 子句以明确指定想要的字段,或者使 ...
2025-03-17在当今数字化时代,数据成为企业发展的关键驱动力,而用户画像作为数据分析的重要成果,改变了企业理解用户、开展业务的方式。无 ...
2025-03-172025年是智能体(AI Agent)的元年,大模型和智能体的发展比较迅猛。感觉年初的deepseek刚火没多久,这几天Manus又成为媒体头条 ...
2025-03-14以下的文章内容来源于柯家媛老师的专栏,如果您想阅读专栏《小白必备的数据思维课》,点击下方链接 https://edu.cda.cn/goods/sh ...
2025-03-13以下的文章内容来源于刘静老师的专栏,如果您想阅读专栏《10大业务分析模型突破业务瓶颈》,点击下方链接 https://edu.cda.cn/go ...
2025-03-12以下的文章内容来源于柯家媛老师的专栏,如果您想阅读专栏《小白必备的数据思维课》,点击下方链接 https://edu.cda.cn/goods/sh ...
2025-03-11