亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python編寫(xiě)判斷真實(shí)文件類(lèi)型工具

 更新時(shí)間:2025年01月09日 10:13:24   作者:黑客白澤  
常在河邊走,哪能不濕鞋,網(wǎng)上獲取的各種文件后綴真真假假,甚至一不小心就會(huì)中招,所以本文就來(lái)用Python編寫(xiě)一個(gè)判斷真實(shí)文件類(lèi)型工具吧

1.簡(jiǎn)介

常在河邊走,哪能不濕鞋。網(wǎng)上獲取的各種文件后綴真真假假,甚至一不小心就會(huì)中招。因此,決定用python寫(xiě)一個(gè)能無(wú)視文件后綴的小程序,直接判斷文件類(lèi)型。該工具原理使用python第三方python-magic庫(kù),通過(guò)文件頭的MIME Type進(jìn)行文件類(lèi)型判斷,不用糾結(jié)文件本身的后綴。

下載文件提供源碼和exe兩種供大家使用,exe文件已在win7 x64/win10 x64下驗(yàn)證過(guò),其他系統(tǒng)請(qǐng)自行驗(yàn)證。喜歡的話(huà)可以點(diǎn)個(gè)關(guān)注哦!

注:

python中運(yùn)行報(bào)錯(cuò)可能是未安裝python-magic導(dǎo)致的,需要安裝以下第三方庫(kù)文件:

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

使用說(shuō)明:

Main function:獲取當(dāng)前文件的真實(shí)類(lèi)型。采用MIME進(jìn)行判斷,可以無(wú)視后綴的篡改。

How to Use:拖拽文件至本exe文件上 or 雙擊打開(kāi),執(zhí)行完成后會(huì)在exe目錄下生成results.txt文檔。

2.運(yùn)行效果

示例圖三為三張jpg截圖,有一張篡改了后綴,一張刪除了后綴,一張維持原樣。均能識(shí)別出來(lái)文件類(lèi)型。

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,打開(kāi)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編寫(xiě)判斷真實(shí)文件類(lèi)型工具的文章就介紹到這了,更多相關(guān)Python文件類(lèi)型判斷內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論