有没有一种方法可以在不使用文件命令的情况下获取带有魔术字节的文件类型

问题描述 投票:0回答:1

我正在尝试在 Windows 上使用 python 获取文件的 MIME 类型。目的是自动完成此操作,并且如果可能的话,无需第三方软件。我需要获取带有魔术字节的类型,因为它比文件的扩展名更可靠。

  • Powershell 不使用魔法字节来确定文件类型,而是使用文件扩展名来确定文件类型
  • mimetypes 库确定带有文件扩展名的 MIME 类型
  • magic 库使用 file 命令,仅在 Unix 上可用

我想最终的解决方案是:读取文件的第一个字节,然后检查它是否包含魔术字节签名。有没有办法做我想做的事而不重新实现它?

python windows file byte mime-types
1个回答
0
投票

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"
    
© www.soinside.com 2019 - 2024. All rights reserved.