python-magic module'对象没有属性'open'

use*_*640 4 python

我正在尝试使用 python-magic 包,它是 libmagic 的包装类。

我使用“pip install python-magic”安装,但是当我测试它时:

import magic
ms = magic.open(magic.MAGIC_NONE)
ms.load()
Run Code Online (Sandbox Code Playgroud)

它表明 module' 对象没有属性 'open'。我在谷歌上搜索,有人说原因之一是我没有 __init__.py 文件。所以我检查了我的个人站点包目录。我找到了 magic.py、magic.pyc 和一个文件夹 python_magic-0.4.3-py2.7.egg-info,其中只包含一些文本文件。

如何获取 __init__.py 文件?我检查了安装的其他软件包,其中一些确实有这样的文件。

谢谢。

Mar*_*ers 7

没有任何 magic.open()功能。如果您查看python-magic文档,您会发现它具有magic.from_file()magic.from_buffer()功能。

用于magic.from_file()测试路径名;该模块会为您打开该文件并确定类型。用于magic.from_buffer()测试字节序列(str在 Python 2 中、bytes在 Python 3 中)。

您还可以实例化一个magic.Magic()类(每个线程!)来改变它的操作方式:

Magic(mime=False, magic_file=None, mime_encoding=False)
Run Code Online (Sandbox Code Playgroud)

记录为:

创建一个新的libmagic包装器。

mime- 如果True返回 mime 类型而不是文本描述
mime_encoding- 如果True返回编解码器
magic_file- 使用除系统默认值之外的 mime 数据库

根据README这就是公共 API 的 全部内容。

类在内部Magic处理magic.MAGIC_NONE;例如,mime=True创建实例时的设置magic.Magic()将设置一个标志。magic.MAGIC_MIME

看起来您遇到的代码似乎完全涵盖了一个不同的Pythonmagic库,需要更多的内部处理。我的建议:不要试图复制这一点。使用这个新库,它记录了 API 。

  • 啊,对了,所以有一个“python-magic”没有在 PyPI 上列出,并且使用不同的 API。 (2认同)