python 判断文件类型_python接口自动化(三十) 上传文件时自动判断文件类型(filetype)...

本文介绍了Python中使用filetype库来判断文件类型的用法,包括安装、基本API、示例代码以及如何结合文件上传场景进行应用,实现自动获取并处理文件的MIME类型。
摘要由CSDN通过智能技术生成

前言

如何判断一个文件的类型呢,判断这个文件是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()

运行结果

426c95afb1a78df7b8d9db216d55fc31.png

结合文件上传使用示例

# 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)

运行结果

1a7d81e1984dedc3305ec7a40272857f.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值