Python编写判断真实文件类型工具

 更新时间:2025年01月09日 10:13:24   作者:黑客白泽  
常在河边走,哪能不湿鞋,网上获取的各种文件后缀真真假假,甚至一不小心就会中招,所以本文就来用Python编写一个判断真实文件类型工具吧

1.简介

常在河边走,哪能不湿鞋。网上获取的各种文件后缀真真假假,甚至一不小心就会中招。因此,决定用python写一个能无视文件后缀的小程序,直接判断文件类型。该工具原理使用python第三方python-magic库,通过文件头的MIME Type进行文件类型判断,不用纠结文件本身的后缀。

下载文件提供源码和exe两种供大家使用,exe文件已在win7 x64/win10 x64下验证过,其他系统请自行验证。喜欢的话可以点个关注哦!

注:

python中运行报错可能是未安装python-magic导致的,需要安装以下第三方库文件:

pip install python-magic
pip install python-magic-bin

使用说明:

Main function:获取当前文件的真实类型。采用MIME进行判断,可以无视后缀的篡改。

How to Use:拖拽文件至本exe文件上 or 双击打开,执行完成后会在exe目录下生成results.txt文档。

2.运行效果

示例图三为三张jpg截图,有一张篡改了后缀,一张删除了后缀,一张维持原样。均能识别出来文件类型。

3.相关源码

import os
import tkinter
import magic
import sys
from tkinter import filedialog
 
def process(fnames,dirpath):
    os.chdir(dirpath)
    result = "results.txt"
    f = open(result, "w",encoding="utf-8")
    for fname in fnames:
        if os.path.exists(fname):
            if os.path.isfile(fname):
                content = "name:{}\nType:{}".format(os.path.basename(fname),
                                                    magic.from_buffer(open(fname, "rb").read(2048), mime=True))
                print(content)
                print("*" * 50)
                f.write(content + "\n")
                f.write("*" * 50 + "\n")
            else:
                print(f"{fname} is not a file")
        else:
            print(f"{fname} not found")
    f.close()
    os.startfile(result)
 
if __name__ == "__main__":
    try:
         
        # 获取当前exe所在执行目录
        if hasattr(sys, 'frozen'):
            application_path = os.path.dirname(sys.executable)
        else:
            application_path = os.path.dirname(os.path.abspath(__file__))
             
        #判断是否是拖拽模式.if yes,直接转入处理,if no,打开UI界面
        fnames=sys.argv[1:]
        if fnames:
            process(fnames,application_path)
        else:
            root = tkinter.Tk()
            root.withdraw()
            fnames = filedialog.askopenfilenames(title='File Selection', filetypes=[ ('All Files', '*') ])
            if fnames:
                process(fnames, application_path)
    except:
        pass

到此这篇关于Python编写判断真实文件类型工具的文章就介绍到这了,更多相关Python文件类型判断内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python 数据可视化实现5种炫酷的动态图

    Python 数据可视化实现5种炫酷的动态图

    数据可以帮助我们描述这个世界、阐释自己的想法和展示自己的成果,但如果只有单调乏味的文本和数字,我们却往往能难抓住观众的眼球。而很多时候,一张漂亮的可视化图表就足以胜过千言万语
    2022-01-01
  • pytorch 膨胀算法实现大眼效果

    pytorch 膨胀算法实现大眼效果

    在PS中,我们可以利用液化工具对人像进行瘦脸、放大眼睛等系列的常规操作。今天我们来了解一下这些操作的算法原理,并用pytorch 膨胀算法来实现大眼效果,感兴趣的可以了解一下
    2021-11-11
  • Python实现的括号匹配判断功能示例

    Python实现的括号匹配判断功能示例

    这篇文章主要介绍了Python实现的括号匹配判断功能,涉及Python栈与列表的存储、遍历、判断等相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • Python实现高斯函数的三维显示方法

    Python实现高斯函数的三维显示方法

    今天小编就为大家分享一篇Python实现高斯函数的三维显示方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python定时采集摄像头图像上传ftp服务器功能实现

    python定时采集摄像头图像上传ftp服务器功能实现

    本文程序实现python定时采集摄像头图像上传ftp服务器功能,大家参考使用吧
    2013-12-12
  • Python编程二分法实现冒泡算法+快速排序代码示例

    Python编程二分法实现冒泡算法+快速排序代码示例

    这篇文章主要介绍了Python编程二分法实现冒泡算法+快速排序代码示例,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Python 70行代码实现简单算式计算器解析

    Python 70行代码实现简单算式计算器解析

    这篇文章主要介绍了Python 70行代码实现简单算式计算器解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python chardet库识别编码原理解析

    Python chardet库识别编码原理解析

    这篇文章主要介绍了python chardet库识别编码原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • django之从html页面表单获取输入的数据实例

    django之从html页面表单获取输入的数据实例

    这篇文章主要介绍了django之从html页面表单获取输入的数据实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Django中信号signals的简单使用方法

    Django中信号signals的简单使用方法

    这篇文章主要给大家介绍了关于Django中信号signals的简单使用方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Django具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07

最新评论