使用libmagic进行文件类型识别
项目描述
magicfile (python-magic的一个CFFI分支)
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 上提交特性和错误修复的各位。
- Amit Sethi
- bigben87
- fallgesetz
- FlaPer87
- lukenowak
- NicolasDelaby
- sacha@ssl.co.uk
- SimpleSeb
- tehmaze
许可证
magicfile 采用 MIT 许可证发布。有关详细信息,请参阅包含的 LICENSE 文件。
项目详情
哈希值 for magicfile-0.4.27-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dbd07816497dbb769b81a2dc0bb9a5addec13c803d90e34d1bb00d801d60dd95 |
|
MD5 | b1089b33b921a40e3dd7db624c02cdc9 |
|
BLAKE2b-256 | 7c7051950831fdc2a73471c1087243b4e4c99f1c6e59e9c42a52cb78a64817c0 |
哈希值 for magicfile-0.4.27-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 32a4dda8f947ede2d0f228671e7d5c21339f8ef1998d25d82d0640145108810f |
|
MD5 | 6b676ad2580187a197fbefc6cb40e86f |
|
BLAKE2b-256 | 380b6d1509be3a8eb5d4d7af5db0ed63a0721aac4cd780c78900b57ecf9cafef |
哈希值 for magicfile-0.4.27-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2bf4fabb2a166648cd2704a312e5573e4f50ade54bbb2c052894795c23171dcf |
|
MD5 | 742a84c7c98f4b71ebde3a3ab66879b8 |
|
BLAKE2b-256 | 9c0baddb1b137cb65cae0596bf62ab09638962079b6ef31a1802f4a7915a4b07 |
哈希值 for magicfile-0.4.27-cp38-cp38-macosx_12_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ef66e7ee687988ee830a95259c5a62cae48ff39694c421182de0e7e6b69eec4c |
|
MD5 | 62a81f0f59ac8c582f80a3af4af66512 |
|
BLAKE2b-256 | 4bf6a77034c051c6f689185dc42051377216bb72ceeeb137544807f2af7d6c46 |
哈希值 for magicfile-0.4.27-cp38-cp38-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 99d94205ce66631f1fe1117b56b3a3734f4be20e3938fc5d2694e21d9d40c166 |
|
MD5 | 1489f3a3bc44672aa0b853548e07780b |
|
BLAKE2b-256 | eecef07c313bf80b747238b9c3b61b68210ba7a7f2ac2fc4f48466c91ce1cd2f |
哈希值 for magicfile-0.4.27-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b7531c947cb487ccd80a116c5427e762744b6daf062454294e4c9224b44691cd |
|
MD5 | 60cfb45dd9138750849c92a9530eab71 |
|
BLAKE2b-256 | 8e3a732f7518aa8d29635580635965391e549b60b5db34325d60732d026343bf |
哈希值 用于 magicfile-0.4.27-cp37-cp37m-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3d55827f0f51a6fb25384b7066ad7588609155c85816f3d4bbeca2349b328c00 |
|
MD5 | d357ea44dbc5987c7a13d1a53885d293 |
|
BLAKE2b-256 | 09b37e09b70723f35fbabd2ba83fff97483780af146e97b60139a3b13bb5d9f2 |
哈希值 用于 magicfile-0.4.27-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 578d577c5730aa000edbd03691f0f3d31a679cd2d1bf6faa87e472baec8a7e08 |
|
MD5 | eadef49885692518168a27b4cd6bd511 |
|
BLAKE2b-256 | 1b788469be2ceeac967cfbb34edef8bb5c6149238982895f9b77ba60fce9b038 |
哈希值 用于 magicfile-0.4.27-cp36-cp36m-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c119b660baeb91e167c7cfd54cf3dedebcc14cfa8ed57fdcff074beef2388935 |
|
MD5 | effa7eebfb1ba76e7908a8043840db64 |
|
BLAKE2b-256 | d1268ef1792c1e46235c966d4b72c1f552533b976e96480e6b5e3053d11f06b5 |