点击“蓝字” 关注我们
工作中对文件的类型识别变得越来越重要,光看文件后缀已经不够准确啦。今天聊聊用Python检测文件类型的filetype库,这个小工具简单轻巧,却相当实用。对文件格式检测超级在行,准确率贼高,还特别好上手。
1.
安装配置
装个库还不简单?一行代码就搞定:
pip install filetype
装好就能直接用,不用额外配置啥的。
2.
基础使用方法
来看个最基本的用法:
import filetype
def check_file_type(file_path):
kind = filetype.guess(file_path)
if kind is None:
print('咦?这个文件类型咱也看不出来...')
return
print(f'这是个{kind.extension}文件,MIME类型是{kind.mime}')
# 试试看
check_file_type('test.jpg')
咱把这段代码拆开说说。filetype.guess()是检测文件类型的核心函数,它不看文件名后缀,而是通过读取文件的二进制数据来判断。返回值里有两个特别有用的属性:extension(扩展名)和mime(MIME类型)。
温馨提示:这个库不光能检测图片,还能认出音频、视频、字体等各种格式,基本上常见的文件类型都能搞定。
3.
二进制数据检测
有时候咱们拿到的是二进制数据,而不是文件路径。这种情况也不用慌:
import filetype
import requests
# 从网上下载个图片试试
url = 'https://example.com/image.jpg'
response = requests.get(url)
kind = filetype.guess(response.content)
if kind:
print(f'这图片是{kind.mime}格式的')
看到没?直接把二进制数据塞给guess()就行。
4.
支持的文件类型
这个库支持超多文件类型,我给你列几个常见的:
# 图片格式
jpg, png, gif, webp, cr2, tif, bmp, jxr, psd, ico
# 视频格式
mp4, m4v, mkv, webm, mov, avi, wmv
# 音频格式
mid, mp3, m4a, ogg, flac, wav, amr
# 压缩包
epub, zip, tar, rar, gz, bz2, 7z
5.
自定义文件类型检测
要是想检测特定类型的文件,可以用filetype.match():
def is_image(file_path):
# 只检查是不是图片
return filetype.match(file_path, filetype.TYPES.image)
def is_video(file_path):
# 只检查是不是视频
return filetype.match(file_path, filetype.TYPES.video)
温馨提示:用match()比先guess()再判断要快,因为它找到匹配就立刻返回了。
6.
实战小技巧
来个实用的例子,批量整理下载文件夹:
import os
import shutil
import filetype
def organize_downloads(path):
for file in os.listdir(path):
if os.path.isfile(file_path):
if kind:
# 按文件类型分类
os.makedirs(type_folder, exist_ok=True)
shutil.move(file_path, os.path.join(type_folder, file))
这段代码能自动把文件按类型分到不同文件夹,特别好用。
写代码难免会碰到坑,我踩过的分享给你:
文件路径有中文时可能会出错,记得用绝对路径
有些文件格式这个库认不出来,比如txt、py这种纯文本文件
检测大文件时别把整个文件读进内存,用with open读取一部分就够了
好了,这就是filetype库的主要用法。不管是写爬虫还是做文件处理,这都是个趁手的工具。代码写得对,文件类型不用愁!
领取专属 10元无门槛券
私享最新 技术干货