python 通过文件头获取文件类型mimetype
一、MIME Type是什么?
资源的媒体类型
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序打开的方式类型,当该扩展名文件被访问时,浏览器会自动使用指定的应用程序打开。
二、mimetypes库---猜测文件类型
该mimetypes模块在文件名或/URL 与文件扩展名关联的 MIME 类型之间进行转换。提供从文件名到 MIME 类型以及从 MIME 类型到文件扩展名的转换;后一种转换不支持编码。
语法:
mimetypes.guess_type(url, strict=True)
根据由url给出的文件名或URL猜测文件的类型。返回值是一个元组(type, encoding),如果类型不能被猜测(丢失或未知的后缀)或表单的字符串(可用于MIME 内容类型头),则类型为元组None'type/subtype'
import mimetypesprint(mimetypes.guess_type(r"C:\Users\zq\Desktop\rarlinux-x64-6.0.2.tar.gz")) # ('application/x-tar', 'gzip')
print(mimetypes.guess_type(r"C:\Users\zq\Desktop\tar.zip")) # ('application/zip', None) 不准
tar.zip文件是直接将tar.tar改名的,故mimetypes计算的文件类型不准确。
三、filetype库精准判断文件类型
一个小巧自由开放Python开发包,主要用来获得文件类型。
功能特色:
简单友好的API
支持宽范围文件类型
提供文件扩展名和MIME类型判断
文件的MIME类型扩展新增
通过文件(图像、视频、音频…)简单分析
可插拔:添加新的自定义类型的匹配
快,即使处理大文件
只需要前261个字节表示的最大文件头,这样你就可以通过一个单字节
依赖自由(只是Python代码,没有C的扩展,没有libmagic绑定)
跨平台文件识别
import filetypedef get_type(file_path):kind = filetype.guess(file_path)if kind is None:print('Cannot guess file type!')returnprint('File extension: %s' % kind.extension)print('File MIME type: %s' % kind.mime)get_type(r"C:\Users\zhangqiang\Desktop\rarlinux-x64-6.0.2.tar.gz")
get_type(r"C:\Users\zhangqiang\Desktop\tar.zip")'''结果
File extension: gz
File MIME type: application/gzipCannot guess file type!
'''
四、python-magic库计算文件类型: 更准确
import magic# tar.tar文件改名为tar.zip
print(magic.from_file("/home/podding/task_scheduler/tar.zip")) # tar archive
print(magic.from_file("/home/podding/task_scheduler/tar.zip", mime=True)) # application/x-tar print(magic.from_file("/home/cpu_architecture_cwe_checker_x86_executable")) # ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.4.0, with debug_info, not stripped
print(magic.from_file("/home/cpu_architecture_cwe_checker_x86_executable", mime=True)) # application/x-executable
五、参考
Python库 使用filetype精确判断文件类型_陈新明博客-CSDN博客_filetype python
【转】python通过文件头判断文件类型 - _小苹果 - 博客园
python使用magic模块进行文件类型识别_第一天-CSDN博客_python-magic
python-magic · PyPI
MIME 参考手册
python 通过文件头获取文件类型mimetype相关推荐
- curl mimetype类型_根据二进制流及文件头获取文件类型mime-type
图片格式查看: 用十六进制编辑器察看过图片的文件头,分析的结果,供大家参考: 1.JPEG/JPG - 文件头标识 (2 bytes): $ff, $d8 (SOI) (JPEG 文件标识) - 文件 ...
- java file 获取文件类型_Android中Java根据文件头获取文件类型
前面贴过Android系统内部的MediaFile类来获取文件类型的办法,这个类主要是根据文件的扩展名来判断,其准确性不是很好.具体可查看Android系统使用MediaFile类判断音频文件类型.其 ...
- python如何区分文件类型_python通过文件头判断文件类型
对于提供上传的服务器,需要对上传的文件进行过滤. 本文为大家提供了python通过文件头判断文件类型的方法,避免不必要的麻烦. 分享代码如下 import struct # 支持文件类型 # 用16进 ...
- java判断文件头_java通过文件头来判断文件类型
importjava.io.FileInputStream;importjava.io.IOException;importjava.util.HashMap;importjava.util.Map. ...
- php读取某类型文件代码,php代码实现读取文件头判断文件类型
php代码实现读取文件头判断文件类型,支持图片.rar.exe等后缀. 案例: //为图片的路径可以用d:/upload/11.jpg等绝对路径 $file = fopen($filename, &q ...
- mysql文件头标记_PHP根据文件头检测文件类型
文件签名一般都在文件的头部,如果你用十六进制方式查看文件,你就可以看到文件的一些签名信息.如用uestudio以十六进制方式查看zip格式的文件,其文件内容头部有50 4B 03 04这样的十六进制信 ...
- java文件头_Java根据文件头判断文件类型
public class FileType { private final static Map FILE_TYPE_MAP = new HashMap(); private FileType(){} ...
- 通过16进制文件头判断文件类型
package cn.edu.hactcm.cfcms.utils; import java.io.FileInputStream; import java.io.IOException; impor ...
- 根据文件头判断文件类型
10个字节判断 [java] view plaincopy private static final HashMap<String, String> mFileTypes = new Ha ...
最新文章
- Puppet 4 性能提升超2倍,升级前应该你知悉的变化
- 3.6 matlab函数文件的定义与调用
- 前端学习(3293):effect hook
- k8s 基础概念和术语
- 说明exit()函数作用的程序
- Photoshop 入门教程「8」如何使用裁剪工具?
- eplan mysql_EPLAN SQL Server 远程数据库的搭建
- java核心技术卷1 所有示例代码
- php手机靓号选号系统源码_最好的手机靓号网站源码-鹏博靓号系统
- Reeder 5.0.3 将RSS阅读体验发挥到极致
- css实现白光划过效果
- SparkSQL和HiveSql的对比
- 新增网站组网方案与解释说明 模版
- 平稳性检验和白噪声检验
- 数据中心液冷方式优缺点对比及浸没式液冷表面强化处理
- 免费搜索引擎登陆入口
- c++ 使用递归求解回文序列问题
- 人在四合院:我变成了何雨柱(二)
- 连续数值变量的离散化、哑变量
- 互联网企业上市基因:团队行业是核心
热门文章
- Tensorflow(七)Retrain Google Inception V3
- TensorFlow学习笔记之源码分析(3)---- retrain.py(转)
- 数据单位:位、字节、字、字长
- 【音视频】Ubuntu安装开源H.264标准编解码库x264
- vm安装mac虚拟机 vcpu-0错误
- 全志 Tina Linux LCD显示屏调试指南 支持MIPI DSI RGB LVDS I8080 SPI等接口,开发板支持百问网T113 D1-H哪吒 DongshanPI-D1s V853
- css上滑事件,仿抖音上划和下拉
- 【论文极速读】VQ-VAE:一种稀疏表征学习方法
- 算法笔记4.1习题_排序
- 单片机设计_室内环境智能监测系统(STM32 OLED ESP8266 DHT11 MQ-2 加湿器)