我正在尝试在 Windows 上使用 python 获取文件的 MIME 类型。目的是自动完成此操作,并且如果可能的话,无需第三方软件。我需要获取带有魔术字节的类型,因为它比文件的扩展名更可靠。
我想最终的解决方案是:读取文件的第一个字节,然后检查它是否包含魔术字节签名。有没有办法做我想做的事而不重新实现它?
puremagic 包看起来是最好的跨平台选项。还有 filetype.py 但它支持的数量不如 puremagic:
https://github.com/cdgriffith/puremagic/blob/master/puremagic/magic_data.json
这就是我的使用方式:
import puremagic
mimetype = None
if p.is_dir():
mimetype = "directory"
try:
mimetype = puremagic.from_file(path, mime=True) or None
except Exception:
if p.is_socket():
mimetype = "socket"
elif p.is_fifo():
mimetype = "fifo"
elif p.is_symlink():
mimetype = "symlink"
elif p.is_block_device():
mimetype = "block device"
elif p.is_char_device():
mimetype = "char device"