from chatgpt
filetype
是一个 Python 包,用于检测文件的类型(MIME 类型和扩展名)。它通过读取文件的二进制数据(magic numbers 或签名)来快速而准确地识别文件类型,而无需依赖文件的扩展名。
安装
使用 pip
安装:
pip install filetype
核心功能
-
自动检测文件类型:
- 可以识别文件是图片、视频、音频、文档等类型。
-
支持多种格式:
- 包括但不限于:
- 图片:JPEG, PNG, GIF, BMP, TIFF, etc.
- 视频:MP4, AVI, MKV, MOV, etc.
- 音频:MP3, WAV, FLAC, etc.
- 文档:PDF, DOCX, XLSX, etc.
- 包括但不限于:
-
基于文件头(magic numbers)识别:
- 它读取文件的前几字节,而不是基于文件扩展名判断。
使用示例
1. 检测文件类型
import filetype
# 检测文件类型
kind = filetype.guess('example.jpg')
if kind:
print(f'File type: {kind.mime}') # 输出 MIME 类型,例如 'image/jpeg'
print(f'File extension: {kind.extension}') # 输出扩展名,例如 'jpg'
else:
print('Cannot guess the file type!')
2. 检测文件字节
可以直接传入文件的二进制数据而不是文件路径:
with open('example.mp3', 'rb') as f:
data = f.read(1024) # 读取文件的前 1024 字节
kind = filetype.guess(data)
if kind:
print(f'File type: {kind.mime}')
print(f'File extension: {kind.extension}')
3. 检查是否是特定类型文件
import filetype
if filetype.is_image('example.png'):
print('This is an image file.')
elif filetype.is_video('example.mp4'):
print('This is a video file.')
优势
- 高效准确:通过文件头(magic numbers)检测,比文件扩展名更可靠。
- 简单易用:API 简单,适合快速集成。
- 轻量级:无复杂依赖,开箱即用。
应用场景
- 文件上传验证:
- 确保用户上传的文件是允许的格式。
- 批量文件管理:
- 检测和分类文件类型。
- 安全检测:
- 防止伪装文件(如将
.exe
文件命名为.png
)。
- 防止伪装文件(如将