前言

如何判断一个文件的类型呢,判断这个文件是png还是jpg,还是MP3文件?filetype包是python用来判断文件类型的依赖包,github地址:https://github.com/h2non/filetype.py

filetype安装

pip install filetype

简介

一个小巧自由开放Python开发包,主要用来获得文件类型。包要求python 3.+

功能特色

简单友好的API

支持宽范围文件类型

提供文件扩展名和MIME类型判断

文件的MIME类型扩展新增

通过文件(图像、视频、音频...)简单分析

可插拔:添加新的自定义类型的匹配

快,即使处理大文件

只需要前261个字节表示的最大文件头,这样你就可以通过一个单字节

依赖自由(只是Python代码,没有C的扩展,没有libmagic绑定)

跨平台文件识别

使用示例

import filetype

def main():

kind = filetype.guess('D:\\生活\\儿歌\\儿歌-拔萝卜.mp3')

if kind is None:

print('Cannot guess file type!')

return

print('File extension: %s' % kind.extension)

print('File MIME type: %s' % kind.mime)

if __name__ == '__main__':

main()

运行结果

python 判断文件数量 python 判断文件类型_github

结合文件上传使用示例

# coding:utf-8

from requests_toolbelt import MultipartEncoder

import requests

m = MultipartEncoder(

fields = [

('source', ('ch', open("d:\\ch.jpg","rb"), 'image/jpep')),

('source', ('hc', open("d:\\hc.jpg","rb"), 'image/jpeg')),

]

)

r = requests.post('http://httpbin.org/post',

data=m,

headers={'Content-Type': m.content_type})

imgFile后面的参数

("1.png",open("d:\\1.png","rb"),"image/png")

每次都需要根据不同的文件类型取修改成对应的mime类型

接下来可以用上面的自动获取文件类型的方法,写个函数,只需要传文件的路径即可自动获取

import filetype

import os

from requests_toolbelt import MultipartEncoder

import requests

def up(filepath="d:\\ch.jpg"):

#根据文件路径,自动获取文件名称和文件mime类型

a=filetype.guess(filepath)

if a is None:

print('Cannot guess file_type!')

#媒体类型

typee=a.mime

#文件真实路径

realp=os.path.realpath(filepath)

#获取文件名

fname=os.path.split(filepath)[-1]

return (fname,open(realp,"rb"),typee)

m=MultipartEncoder(

fields=[

('source',up()),

])

r=requests.post('http://httpbin.org/post',data=m,headers={'Content-Type':m.content_type})

print(r.text)

运行结果

python 判断文件数量 python 判断文件类型_github_02

这样就可以只关注文件的路径,不需要关注具体类型了。