首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

filetype,文件类型检测的超强助手!

点击“蓝字” 关注我们

工作中对文件的类型识别变得越来越重要,光看文件后缀已经不够准确啦。今天聊聊用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库的主要用法。不管是写爬虫还是做文件处理,这都是个趁手的工具。代码写得对,文件类型不用愁!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OmwJybvLNXy0M9GCQmX_WUdg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券