Categories: Python

Python 使用 python-magic 模組檢查檔案類型教學與範例

本文介紹如何在 Python 指令稿中使用 python-magic 模組檢查與判斷各種檔案的類型。

python-magic 是一個 libmagic 檔案類型辨識函式庫的 Python 介面模組,libmagic 可以藉由比對檔案的標頭來判斷檔案的類型,在 Linux 中的 file 指令就是利用這樣的方式來判斷檔案類型。

安裝 python-magic

Python 的 python-magic 模組可以使用 pip 安裝:

# 安裝 python-magic 函式庫
pip install python-magic

python-magic 本身只是 libmagic 的介面,所以還要另外安裝 libmagic 函式庫。

若在 Ubuntu 或 Debian Linux 中,可以用 apt 安裝 libmagic 函式庫:

# 安裝 libmagic(Ubuntu Linux)
sudo apt-get install libmagic1

若在 Windows 中,可以用 pip 安裝 python-magic-bin 模組:

# 安裝 libmagic(Windows)
pip install python-magic-bin

若在 macOS 中則可透過 Homebrew 或 macports 的方式安裝 libmagic 函式庫:

# 安裝 libmagic(macOS 使用 Homebrew)
brew install libmagic

# 安裝 libmagic(macOS 使用 macports)
port install file

檢查檔案類型

若要檢查指定檔案的類型,可以使用 magic.from_file 函數從檔案直接讀取標頭資訊並判斷檔案類型:

import magic

# 檢查檔案類型
print(magic.from_file("script.sh"))
Bourne-Again shell script, UTF-8 Unicode text executable

亦可自行讀取檔案標頭至緩衝區後,從緩衝區讀取標頭資料:

# 從緩衝區讀取資料
print(magic.from_buffer(open("doc.pdf", "rb").read(2048)))
PDF document, version 1.2

自行讀取檔案標頭時,讀取的長度建議至少為 2048,太短的話容易造成誤判。

MIME 格式輸出

若要以 MIME 格式輸出,可以將 mime 參數設定為 True

# 以 MIME 格式輸出
print(magic.from_file("doc.pdf", mime=True))
application/pdf

判斷檔案類型

若要判斷檔案的類型,可以考慮使用 MIME 格式的輸出來進行判斷:

# 檔案名稱
filename = "doc.pdf"

# 判斷檔案類型
if magic.from_file(filename, mime=True) == 'application/pdf':
    print(f"{filename} is a PDF file.")
Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago