作者:倒叙的时光_SX_126 | 来源:互联网 | 2023-07-06 12:19
一、MIMEType是什么?资源的媒体类型MIME(MultipurposeInternetMailExtensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用
一、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 mimetypes
print(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开发包,主要用来获得文件类型。
功能特色:
import filetype
def get_type(file_path):
kind = filetype.guess(file_path)
if kind is None:
print('Cannot guess file type!')
return
print('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/gzip
Cannot guess file type!
'''
四、python-magic库计算文件类型: 更准确
python-magic 是 libmagic 文件类型识别库的 Python 接口。
libmagic 通过根据预定义的文件类型列表检查文件头来识别文件类型。 此功能由 Unix 命令文件提供给命令行。
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 参考手册