前言

如何判断一个文件的类型呢,判断这个文件是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!')returnprint('File extension: %s' % kind.extension)print('File MIME type: %s' % kind.mime)if __name__ == '__main__':main()

 运行结果

 结合文件上传使用示例

requests_toolbelt使用参考https://www.cnblogs.com/canglongdao/p/13440314.html


# coding:utf-8
from requests_toolbelt import MultipartEncoder
import requestsm = 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接口自动化(三十) 上传文件时自动判断文件类型(filetype)相关推荐

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

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

  2. Android 通过python实现自动化构建打包上传加固

    Android 通过python实现自动化构建打包上传加固 实现需求: 基于gradle命令,通过python实现多渠道,多环境打包,上传蒲公英,360加固等 经过学习调研完成步骤如下: 一,通过gr ...

  3. 上传视频时自动完成截取缩略图(一)

    视频类网站我们每天都会用到,优酷.爱奇艺.腾讯视频.百度视频为我们提供了各种各样丰富的影视资源丰富我们的日常娱乐.视频在线教育发展同样也很火. 最近在做校园视频管理的项目.从最开始的熟悉框架,各种技术 ...

  4. Python创建文件时自动生成文件信息

    Python创建文件时自动生成文件信息 在创建python脚本文件时,对文件初始化自动生成一些文件信息来进行设置 1 打开路径 2 调整面板 3 面板填写样式 参考链接 Pycharm创建文件时自动生 ...

  5. python接口自动化(十)--post请求四种传送正文方式(详解)

    简介 post请求我在python接口自动化(八)–发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等.我们要知道post请求四种传送正文方式首先需要先了 ...

  6. 接口自动化实现图片上传(selenium/RF)

    最近做自动化碰到一个问题: 就是带图片上传的不知道怎么实现自动化:整理了下实现如下: 上传图片postman 结果请求如下,上传图片后返回一个图片地址: post请求 body 是form-data ...

  7. ajax可以发送文件,通过Ajax上传img时如何发送文件信息

    我正在尝试拆分上传到ajax方法的图像文件.所有的html和JS都在一个文件中,然后我组成了一个包含所有PHP的PHP文件. 我正在努力的是,我不确定如何将图像文件信息发送到php文件,然后如何使其余 ...

  8. 上传file时accept限制文件类型pdf、doc、docx、 jpg、 png、xls 、xlsx等格式

    <input type="file" accept="image/*" /> accept表示可以上传文件类型,image表示图片,*表示所有支持的 ...

  9. python接口自动化(十六)--参数关联接口后传(详解)

    简介 大家对前边的自动化新建任务之后,接着对这个新建任务操作了解之后,希望带小伙伴进一步巩固胜利的果实,夯实基础.因此再在沙场实例演练一下博客园的相关接口.我们用自动化发随笔之后,要想接着对这篇随笔操 ...

最新文章

  1. Linux 下杀毒软件 CPU 占用率为何持续升高?
  2. 查看python安装的包
  3. 最实用的Office使用技巧
  4. 《Java和Android开发学习指南(第2版)》——第2章,第2.10节本章小结
  5. 计算机基础知识离线作业答案,浙大远程教育计算机离线作业1.计算机基础知识题...
  6. RDP协议详细解析(二)
  7. 频繁模式挖掘apriori算法介绍及Java实现
  8. C语言自学之路九(用C语言编写小游戏-扫雷)
  9. Powerbuilder webform,webservices 倍力文档在线查看
  10. Adams2019安装教程链接分享
  11. HTML5/CSS3动画应用
  12. Windows 7 查看默认的本地 DNS 服务器地址
  13. 川大 计算机学院 惠子,“挑战杯”四川大学2013年学生科技节之“纺兴未艾,织行天下”废物循环利用大赛决赛圆满落幕...
  14. Docker入门实战看这篇就够了(最新详细以及踩过的坑)
  15. 自定义注解+拦截器优化项目代码
  16. 减一技术实现求a的n次幂
  17. 万豪环保系列之水箱自洁消毒器
  18. java cookbook 3_CookBook/Java核心/3-Java反射.md at master · Byron4j/CookBook · GitHub
  19. Android ToggleButton 实践
  20. informix GBase锁表处理 | ISAM error: key value locked

热门文章

  1. Nacos、Eureak、Feign原理源码分析
  2. java用redis缓存的步骤_Java 使用Redis缓存工具的图文详细方法
  3. 固定电话、传真和手机js验证
  4. Linux网络编程小项目sqlite,嵌入式数据库sqlite
  5. 装饰模式,制作一个蛋糕java
  6. python中的类怎么定义怎么用_python中怎么定义一个类
  7. JAVA强制类型转换
  8. “0基础、学历无优势、逻辑能力一般……”能转行做程序员吗?
  9. hive操作总结手册
  10. 【时间序列】Prophet使用