前言
如何判断一个文件的类型呢,判断这个文件是png还是jpg,还是MP3文件?filetype包是python用来判断文件类型的依赖包,github地址:/h2non/filetype.py
filetype安装
pip install filetype
简介
一个小巧自由开放Python开发包,主要用来获得文件类型。包要求python 3.+
功能特色
简单友好的API支持宽范围文件类型提供文件扩展名和MIME类型判断文件的MIME类型扩展新增通过文件(图像、视频、音频...)简单分析可插拔:添加新的自定义类型的匹配快,即使处理大文件只需要前261个字节表示的最大文件头,这样你就可以通过一个单字节依赖自由(只是Python代码,没有C的扩展,没有libmagic绑定)跨平台文件识别
使用示例
import filetypedef main():kind = filetype.guess('D:\\生活\\儿歌\\儿歌-拔萝卜.mp3')if kind is None:print('Cannot guess file type!')returnprint('File extension: %s' % kind.extension)print('File MIME type: %s' % kind.mime)if __name__ == '__main__':main()
运行结果
结合文件上传使用示例
requests_toolbelt使用参考/canglongdao/p/13440314.html
# coding:utf-8from requests_toolbelt import MultipartEncoderimport requestsm = MultipartEncoder(fields = [('source', ('ch', open("d:\\ch.jpg","rb"), 'image/jpep')),('source', ('hc', open("d:\\hc.jpg","rb"), 'image/jpeg')),])r = requests.post('/post',data=m,headers={'Content-Type': m.content_type})
imgFile后面的参数
("1.png",open("d:\\1.png","rb"),"image/png")
每次都需要根据不同的文件类型取修改成对应的mime类型
接下来可以用上面的自动获取文件类型的方法,写个函数,只需要传文件的路径即可自动获取
import filetypeimport osfrom requests_toolbelt import MultipartEncoderimport requestsdef 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('/post',data=m,headers={'Content-Type':m.content_type})print(r.text)
运行结果
这样就可以只关注文件的路径,不需要关注具体类型了。