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 .
实例
简单的文件类型识别
type!')
支持类型
图片
• 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
–
• 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使用filetype精确判断文件类型的更多相关文章
- Python使用filetype精确判断文件类型 (文件类型获取)
filetype.py Small and dependency free Python package to infer file type and MIME type checking the m ...
- Python之基于十六进制判断文件类型
核心代码: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Author : suk import struct from io import Byt ...
- 【转】python通过文件头判断文件类型
刚刚看到一个好玩的程序,拉过来.原文地址:https://www.ttlsa.com/python/determine-file-type-by-the-file-header/ 侵权删. ===== ...
- python准确判断文件类型
判断文件类型在开发中非常常见的需求,怎样才能准确的判断文件类型呢?首先大家想到的是文件的后缀,但是非常遗憾的是这种方法是非常不靠谱的,因为文件的后缀是可以随意更改的,而大家都知道后缀在linux系统下 ...
- 利用PHP取二进制文件头判断文件类型
<?php $files = array('D:\no.jpg', 'D:\no.png','D:\no2.JPEG','D:\no.BMP'); $fileTypes = array( 779 ...
- php 读取文件头判断文件类型的实现代码
php代码实现读取文件头判断文件类型,支持图片.rar.exe等后缀. 例子: <?php $filename = "11.jpg"; //为图片的路径可以用d:/uploa ...
- 用java流方式判断文件类型
这个方法只能在有限的范围内有效.并不是万金油 比如 图片类型判断,音频文件格式判断,视频文件格式判断等这种肯定是2进制且专业性很强的文件类型判断. 下面给出完整版代码 首先是文件类型枚取 packag ...
- UNIX环境编程学习笔记(6)——文件I/O之判断文件类型
lienhua342014-09-01 1 文件类型 我们平时最常接触的文件类型有普通文件(regular file)和目录(di-rectory file),但是 UNIX 系统提供了多种文件类型: ...
- java文件上传,自动判断文件类型
public enum FileType { /** * JEPG. */ JPEG("FFD8FF"), /** * PNG. */ PNG("89504E47&quo ...
随机推荐
- JAVA bean为何要实现序列化
简而言之:序列化,就是为了在不同时间或不同平台的JVM之间共享实例对象.即序列化出于两个原因:①.用于持久化到磁盘上:②.用于作为数据流在网络上传输. 所谓的Serializable,就是java提供 ...
- Hadoop-No.2之标准文件格式
标准文件格式可以指文本格式,也可以指二进制文件类型.前者包括逗号分隔值(Comma-Separated Value,CSV和可扩展的标记语言文本(Extensible Markup Language. ...
- django 之csrf、auth模块及settings源码、插拔式设计
目录 基于django中间件拷贝思想 跨站请求伪造简介 跨站请求伪造解决思路 方式1:form表单发post请求解决方法 方式2:ajax发post请求解决方法 csrf相关的两个装饰器 csrf装饰 ...
- python中的list,tuple,dict,set简介---陈雨童
变量和对象 变量把对象和自己连接起来(指针连接对象空间),引用建立了变量和对象之间的映射关系,这就是引用.引用完成,就实现了赋值.变量通过对象的内存地址指向对象,类似于软链接 将变量a赋值给变量b,其 ...
- 线段树初步——转载自ljc20020730
线段树初步 线段树模板1:https://www.luogu.org/problem/show?pid=3372 线段树模板2:https://www.luogu.org/problem/show ...
- css基础(浮动 清除f浮动)
文档流(标准流) 1.元素自上而下,自左而右 2.块元素,独占一行,行内元素在一行上显示,碰到父级元素的边框换行 浮动left 浮动的框可以向左或是向右移动,直到它的边缘碰到包含框或是另个浮动框 ...
- liunx 一些文件下载上传的命令
xshell 上传 rz sftp 语法: put path/filename.txt Put -r path/文件夹 或者 put “path/filename.txt” Put -r “path/ ...
- linux 上修改了nginx.conf 怎么重新加载配置文件生效
步骤如下先利用/usr/local/nginx/sbin/nginx -t测试配置文件修改是否正常/usr/local/nginx/sbin/nginx -s reload重新加载 nginx 更改配 ...
- spring自定义自动配置注解
我们知道springboot自动配置@EnableAutoConfiguration是通过@Import(AutoConfigurationImportSelector.class)来把自动配置组件加 ...
- SpringSecurity——默认过滤器链
介绍Spring Security默认的过滤器链,介绍顺序按照过滤器在过滤器链中的顺序排序 1.WebAsyncManagerIntegrationFilter 将Security上下文与Spring ...