Python編寫判斷真實文件類型工具
1.簡介
常在河邊走,哪能不濕鞋。網上獲取的各種文件后綴真真假假,甚至一不小心就會中招。因此,決定用python寫一個能無視文件后綴的小程序,直接判斷文件類型。該工具原理使用python第三方python-magic庫,通過文件頭的MIME Type進行文件類型判斷,不用糾結文件本身的后綴。
下載文件提供源碼和exe兩種供大家使用,exe文件已在win7 x64/win10 x64下驗證過,其他系統(tǒng)請自行驗證。喜歡的話可以點個關注哦!
注:
python中運行報錯可能是未安裝python-magic導致的,需要安裝以下第三方庫文件:
pip install python-magic pip install python-magic-bin
使用說明:
Main function:獲取當前文件的真實類型。采用MIME進行判斷,可以無視后綴的篡改。
How to Use:拖拽文件至本exe文件上 or 雙擊打開,執(zhí)行完成后會在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所在執(zhí)行目錄
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文件類型判斷內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

