Python編寫判斷真實(shí)文件類型工具
1.簡介
常在河邊走,哪能不濕鞋。網(wǎng)上獲取的各種文件后綴真真假假,甚至一不小心就會中招。因此,決定用python寫一個能無視文件后綴的小程序,直接判斷文件類型。該工具原理使用python第三方python-magic庫,通過文件頭的MIME Type進(jìn)行文件類型判斷,不用糾結(jié)文件本身的后綴。
下載文件提供源碼和exe兩種供大家使用,exe文件已在win7 x64/win10 x64下驗(yàn)證過,其他系統(tǒng)請自行驗(yàn)證。喜歡的話可以點(diǎn)個關(guān)注哦!
注:
python中運(yùn)行報錯可能是未安裝python-magic導(dǎo)致的,需要安裝以下第三方庫文件:
pip install python-magic pip install python-magic-bin
使用說明:
Main function:獲取當(dāng)前文件的真實(shí)類型。采用MIME進(jìn)行判斷,可以無視后綴的篡改。
How to Use:拖拽文件至本exe文件上 or 雙擊打開,執(zhí)行完成后會在exe目錄下生成results.txt文檔。
2.運(yùn)行效果
示例圖三為三張jpg截圖,有一張篡改了后綴,一張刪除了后綴,一張維持原樣。均能識別出來文件類型。
3.相關(guān)源碼
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: # 獲取當(dāng)前exe所在執(zhí)行目錄 if hasattr(sys, 'frozen'): application_path = os.path.dirname(sys.executable) else: application_path = os.path.dirname(os.path.abspath(__file__)) #判斷是否是拖拽模式.if yes,直接轉(zhuǎn)入處理,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
到此這篇關(guān)于Python編寫判斷真實(shí)文件類型工具的文章就介紹到這了,更多相關(guān)Python文件類型判斷內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python?數(shù)據(jù)可視化實(shí)現(xiàn)5種炫酷的動態(tài)圖
數(shù)據(jù)可以幫助我們描述這個世界、闡釋自己的想法和展示自己的成果,但如果只有單調(diào)乏味的文本和數(shù)字,我們卻往往能難抓住觀眾的眼球。而很多時候,一張漂亮的可視化圖表就足以勝過千言萬語2022-01-01Python實(shí)現(xiàn)的括號匹配判斷功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的括號匹配判斷功能,涉及Python棧與列表的存儲、遍歷、判斷等相關(guān)操作技巧,需要的朋友可以參考下2018-08-08Python實(shí)現(xiàn)高斯函數(shù)的三維顯示方法
今天小編就為大家分享一篇Python實(shí)現(xiàn)高斯函數(shù)的三維顯示方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12python定時采集攝像頭圖像上傳ftp服務(wù)器功能實(shí)現(xiàn)
本文程序?qū)崿F(xiàn)python定時采集攝像頭圖像上傳ftp服務(wù)器功能,大家參考使用吧2013-12-12Python編程二分法實(shí)現(xiàn)冒泡算法+快速排序代碼示例
這篇文章主要介紹了Python編程二分法實(shí)現(xiàn)冒泡算法+快速排序代碼示例,具有一定借鑒價值,需要的朋友可以參考下2018-01-01Python 70行代碼實(shí)現(xiàn)簡單算式計算器解析
這篇文章主要介紹了Python 70行代碼實(shí)現(xiàn)簡單算式計算器解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08django之從html頁面表單獲取輸入的數(shù)據(jù)實(shí)例
這篇文章主要介紹了django之從html頁面表單獲取輸入的數(shù)據(jù)實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03