Python GUI判断真实文件类型

前言:常在河边走,哪能不湿鞋。网上获取的各种文件后缀真真假假,甚至一不小心就会中招。因此,决定用python写一个能无视文件后缀的小程序,直接判断文件类型。
原理:使用python第三方python-magic库,通过文件头的MIME Type进行文件类型判断,不用纠结文件本身的后缀。
下载文件组成:提供源码和exe两种供大家使用,exe文件已在win7 x64/win10 x64下验证过,其他系统请自行验证。
源码:

# encoding:utf-8
# Main function:获取当前文件的真实类型。采用MIME进行判断,可以无视后缀的篡改。
# How to Use:拖拽文件至本exe文件上 or 双击打开,执行完成后会在exe目录下生成results.txt文档。

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:{}
Type:{}".format(os.path.basename(fname),
				                                    magic.from_buffer(open(fname, "rb").read(2048), mime=True))
				print(content)
				print("*" * 50)
				f.write(content + "
")
				f.write("*" * 50 + "
")
			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 GUI判断真实文件类型

Python GUI判断真实文件类型

下载链接:
链接:https://pan.baidu.com/s/1Z1yWpgPWW8NPBuUwpe38qw
提取码:52pj

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 共3条

请登录后发表评论