3

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

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

import magic
ms = magic.open(magic.MAGIC_NONE)
ms.load()

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

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

谢谢。

4

1 回答 1

5

没有功能 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)

记录为:

创建一个新的libmagic包装器。

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

根据 ,就公共 API 而言README这就是 全部。

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

看起来您遇到的代码完全涵盖了一个不同的Pythonmagic库,需要更多的内部操作。我的建议:不要试图复制它。使用这个新库和它的文档化 API而已

于 2013-08-14T10:10:48.713 回答