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类的动态修改的实例方法

    Python类的动态修改的实例方法

    这篇文章主要介绍了Python类的动态修改的实例方法的相关资料,需要的朋友可以参考下
    2017-03-03
  • Python编写邮件自动发送工具的完整指南

    Python编写邮件自动发送工具的完整指南

    自动化邮件发送是一个非常实用的功能,无论是系统通知,营销邮件,还是日常工作报告,下面我们来看看Python如何使用smtplib实现邮件自动发送工具吧
    2025-06-06
  • Python爬虫爬取Bilibili弹幕过程解析

    Python爬虫爬取Bilibili弹幕过程解析

    这篇文章主要介绍了Python爬虫爬取Bilibili弹幕过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Python程序中引用环境变量的方法实现

    Python程序中引用环境变量的方法实现

    本文主要介绍了Python程序中引用环境变量的方法实现,通过配置环境变量并在代码中引用,可以避免将敏感信息直接写入代码中,感兴趣的可以了解一下
    2024-12-12
  • Python3 pandas.concat的用法说明

    Python3 pandas.concat的用法说明

    这篇文章主要介绍了Python3 pandas.concat的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 深入了解Python中Pytest Markers的使用方法

    深入了解Python中Pytest Markers的使用方法

    从这篇开始,逐一解决fixture是啥,mark是啥,参数request是啥,钩子函数是啥,parametrize参数化是啥,这些问题,本片先介绍一下mark是啥,以及如何使用
    2023-09-09
  • python读取mysql数据绘制条形图

    python读取mysql数据绘制条形图

    这篇文章主要为大家详细介绍了python读取mysql数据绘制条形图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • TensorFlow固化模型的实现操作

    TensorFlow固化模型的实现操作

    这篇文章主要介绍了TensorFlow固化模型的实现操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • python判断集合的超集方法及实例

    python判断集合的超集方法及实例

    在本篇内容里小编给大家分享的是一篇关于python判断集合的超集方法及实例内容,有兴趣的朋友们可以学习下。
    2021-05-05
  • Python字典操作得力助手Get()函数的使用

    Python字典操作得力助手Get()函数的使用

    在Python编程中,get()函数是字典(Dictionary)对象中非常有用的函数,本文将详细介绍get()函数的用法及示例代码,感兴趣的可以了解一下
    2023-11-11

最新评论