# 支持文件类型
# 用16进制字符串的目的是可以知道文件头是多少字节
# 各种文件头的长度不一样,少半2字符,长则8字符
def typeList():return {"3c68313ee689abe68f8f": 'html',"504b03040a0000000000": 'xlsx','504b0304140008080800': 'docx',"d0cf11e0a1b11ae10000": 'doc','2d2d204d7953514c2064': 'sql','ffd8ffe000104a464946': 'jpg','89504e470d0a1a0a0000': 'png','47494638396126026f01': 'gif','3c21444f435459504520': 'html','3c21646f637479706520': 'htm','48544d4c207b0d0a0942': 'css','2f2a21206a5175657279': 'js','255044462d312e350d0a': 'pdf',}# 字节码转16进制字符串
def bytes2hex(bytes):num = len(bytes)hexstr = u""for i in range(num):t = u"%x" % bytes[i]if len(t) % 2:hexstr += u"0"hexstr += treturn hexstr.upper()# 获取文件类型
def filetype(filename):binfile = open(filename, 'rb')  # 必需二制字读取bins = binfile.read(20)  # 提取20个字符binfile.close()  # 关闭文件流bins = bytes2hex(bins)  # 转码bins = bins.lower()  # 小写print(bins)tl = typeList()  # 文件类型ftype = 'unknown'for hcode in tl.keys():lens = len(hcode)  # 需要的长度if bins[0:lens] == hcode:ftype = tl[hcode]breakif ftype == 'unknown':  # 全码未找到,优化处理,码表取5位验证bins = bins[0:5]for hcode in tl.keys():if len(hcode) > 5 and bins == hcode[0:5]:ftype = tl[hcode]breakreturn ftype# 文件扫描,如果是目录,就将遍历文件,是文件就判断文件类型
def filescanner(path):if type(path) != type('a'):  # 判断是否为字符串print('抱歉,你输入的不是一个字符串路径!')elif path.strip() == '':  # 将两头的空格移除print('输入的路径为空!')elif not os.path.exists(path):print('输入的路径不存在!')elif os.path.isfile(path):if path.rfind('.') > 0:print('文件名:', os.path.split(path)[1])else:print('文件名中没有找到格式')path = filetype(path)print('解析文件判断格式:' + path)elif os.path.isdir(path):print('输入的路径指向的是目录,开始遍历文件')for p, d, fs in os.walk(path):print(os.path.split(p))for n in fs:n = n.split('.')print('\t' + n[0] + '\t' + n[1])if __name__ == '__main__':path = input('请输入要扫描的文件夹路径:')filescanner(path)

python判断文件类型相关推荐

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

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

  2. python判断文件类型:使用filetype

    filetype作用 一个小巧自由开放Python开发包,主要用来获得文件类型. filetype支持版本: python2/python3 filetype安装: pip install filet ...

  3. python如何区分文件类型_python通过文件头判断文件类型

    对于提供上传的服务器,需要对上传的文件进行过滤. 本文为大家提供了python通过文件头判断文件类型的方法,避免不必要的麻烦. 分享代码如下 import struct # 支持文件类型 # 用16进 ...

  4. python读取文件类型_python准确判断文件类型

    判断文件类型在开发中非常常见的需求,怎样才能准确的判断文件类型呢?首先大家想到的是文件的后缀,但是非常遗憾的是这种方法是非常不靠谱的,因为文件的后缀是可以随意更改的,而大家都知道后缀在linux系统下 ...

  5. python文件的两种类型进制文件,Python之基于十六进制判断文件类型

    #!/usr/bin/env python#-*- coding: utf-8 -*-#@Author : suk importstructfrom io importBytesIO#支持文件类型#用 ...

  6. python获取文件后缀_Python使用filetype精确判断文件类型 (文件类型获取)

    filetype.py Small and dependency free Python package to infer file type and MIME type checking the m ...

  7. Python库 使用filetype精确判断文件类型

    filetype判断文件类型 作用 一个小巧自由开放Python开发包,主要用来获得文件类型. 支持版本: python2/python3 安装: pip install filetype 功能特色 ...

  8. python中如何区分文件类型_python准确判断文件类型

    判断文件类型在开发中非常常见的需求,怎样才能准确的判断文件类型呢?首先大家想到的是文件的后缀,但是非常遗憾的是这种方法是非常不靠谱的,因为文件的后缀是可以随意更改的,而大家都知道后缀在linux系统下 ...

  9. python如何区分文件类型_Python使用filetype精确判断文件类型

    filetype.py Small and dependency free Python package to infer file type and MIME type checking the m ...

最新文章

  1. Linux 准确查找结构体定义位置
  2. mysql给root开启远程访问权限,修改root密码
  3. python3 tcp 文件传输源码
  4. 页面加载进度条改进版
  5. Android模拟器访问pc与网络的问题
  6. Python--day63--添加书籍
  7. 致openGauss社区用户的一封信
  8. futuretask java 并发请求_Java并发编程:Callable、Future和FutureTask
  9. 渐变虚框及边框滚动的实现
  10. mysql engine 外键_Mysql 外键设置
  11. CSDN 如何删除自己不用的分类(亲测有效!)
  12. 体验Unity2017.2.0f3进行Vuforia开发
  13. 【Linux】修改镜像源
  14. 分享一个WIN10可用的桌面图标栅栏管理插件Fences的破解版
  15. win7休眠的开启与关闭方法
  16. win10开机内存占用过高
  17. org.apache.ibatis.builder.IncompleteElementException:Could not find result map cn.lyp.entity.Book
  18. 用Python写的随机起名字的程序(可以起两字或三字名字)
  19. Task 05:样式色彩秀芳华
  20. 利用visio 画思维导图

热门文章

  1. Bluetooth 4.0之Android 讲解
  2. [真情文字]真情永远不会老去
  3. Fashion MNIST图片重建实战(AE)
  4. C/C++下使用SQLite轻量级数据库
  5. WS_EX_TRANSPARENT - 它实际上做了什么?
  6. verilog语法学习_2.时序控制(延时控制 时间控制)
  7. python开发工程师必刷题型(长期更新)
  8. 用URLOS一键安装laiketui电商门店系统 又快又方便
  9. python线程退出或应用程序请求_Python 线程和进程
  10. centos ip配置_在虚拟机(Vmware)中配置centos7系统静态ip,就是如此简单