跳转到主要内容

使用libmagic进行文件类型识别

项目描述

magicfile (python-magic的一个CFFI分支)

PyPI version

magicfile 是一个用于libmagic文件类型识别库的Python接口。libmagic通过检查其头部并根据预定义的文件类型列表来识别文件类型。该功能通过Unix命令 file 在命令行中公开。

用法

>>> import magicfile as magic
>>> magic.from_file("testdata/test.pdf")
'PDF document, version 1.2'
>>> magic.from_buffer(open("testdata/test.pdf").read(1024))
'PDF document, version 1.2'
>>> magic.from_file("testdata/test.pdf", mime=True)
'application/pdf'

还有一个提供更多直接控制的 Magic 类,包括覆盖魔法数据库文件和启用字符编码检测。这不建议一般使用。特别是,它不安全地在多个线程之间共享,并且如果尝试这样做将会失败。

>>> f = magic.Magic(uncompress=True)
>>> f.from_file('testdata/test.gz')
'ASCII text (gzip compressed data, was "test", last modified: Sat Jun 28
21:32:52 2008, from Unix)'

您还可以组合标志选项

>>> f = magic.Magic(mime=True, uncompress=True)
>>> f.from_file('testdata/test.gz')
'text/plain'

版本控制

小版本升级应该是向后兼容的。主要升级则不是。

名称冲突

不幸的是,有两个库使用了模块名称 magic。它们都已经存在很长时间了。如果您使用此模块并且在使用类似 open 的方法时遇到错误,您的代码期望使用另一个。希望有一天这些将被协调。

安装

magicfile 的当前稳定版本可在 PyPI 上找到,可以通过运行 pip install magicfile 进行安装。

其他来源

故障排除

  • 'MagicException: could not find any magic files!': some installations of libmagic do not correctly point to their magic database file. Try specifying the path to the file explicitly in the constructor: magic.Magic(magic_file="path_to_magic_file").

  • 'WindowsError: [Error 193] %1 is not a valid Win32 application': Attempting to run the 32-bit libmagic DLL in a 64-bit build of python will fail with this error. Here are 64-bit builds of libmagic for windows: https://github.com/pidydx/libmagicwin64

  • 'WindowsError: exception: access violation writing 0x00000000 ' This may indicate you are mixing Windows Python and Cygwin Python. Make sure your libmagic and python builds are consistent.

作者

由 Adam Hupp 于 2001 年为从未启动的项目编写。最初使用 SWIG 进行 C 库绑定,但后来改为使用 ctypes,因为那时 ctypes 已成为 Python 标准库的一部分。

您可以通过我的网站github联系我。

贡献者

感谢以下在 github 上提交特性和错误修复的各位。

许可证

magicfile 采用 MIT 许可证发布。有关详细信息,请参阅包含的 LICENSE 文件。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源代码发行版

此版本没有提供源代码发行版文件。请参阅生成发行版存档的教程

编译发行版

magicfile-0.4.27-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (616.2 kB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.12+ x86-64

magicfile-0.4.27-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (616.3 kB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.12+ x86-64

magicfile-0.4.27-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (616.7 kB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.12+ x86-64

magicfile-0.4.27-cp38-cp38-macosx_12_0_arm64.whl (474.9 kB 查看哈希值)

上传时间 CPython 3.8 macOS 12.0+ ARM64

magicfile-0.4.27-cp38-cp38-macosx_10_14_x86_64.whl (479.1 kB 查看哈希值)

上传时间 CPython 3.8 macOS 10.14+ x86-64

magicfile-0.4.27-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (616.2 kB 查看哈希值)

上传时间 CPython 3.7m manylinux: glibc 2.12+ x86-64

magicfile-0.4.27-cp37-cp37m-macosx_10_14_x86_64.whl (479.1 kB 查看哈希值)

上传时间 CPython 3.7m macOS 10.14+ x86-64

magicfile-0.4.27-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (616.2 kB 查看哈希值)

上传时间 CPython 3.6m manylinux: glibc 2.12+ x86-64

magicfile-0.4.27-cp36-cp36m-macosx_10_14_x86_64.whl (479.1 kB 查看哈希值)

上传时间 CPython 3.6m macOS 10.14+ x86-64

由以下机构支持