魔法模块'对象没有属性'打开'
我正在尝试使用python-magic软件包,libmagic的包装类。
我使用“pip install python-magic”来安装,但是当我测试它时:
import magic
ms = magic.open(magic.MAGIC_NONE)
ms.load()
它显示模块'对象没有'打开'属性。 我在谷歌搜索和有人说,一个原因是我没有__init__.py文件。 所以我检查了我的peronsal site-packages目录。 我发现magic.py,magic.pyc和一个包含一些文本文件的文件夹python_magic-0.4.3-py2.7.egg-info。
我怎样才能得到__init__.py文件? 我检查了其他软件包的安装,其中一些确实有这样的文件。
谢谢。
没有 magic.open()
函数。 如果你看看python-magic
文档,你可以看到它有magic.from_file()
和magic.from_buffer()
函数。
使用magic.from_file()
来测试路径名称; 该模块为您打开该文件并确定类型。 使用magic.from_buffer()
来测试一个字节序列(Python 2中的str
,Python 3中的bytes
)。
还有一个magic.Magic()
类,您可以实例化(每个线程!)以改变它的运行方式:
Magic(mime=False, magic_file=None, mime_encoding=False)
记录为:
创建一个新的libmagic
包装。
mime
- 如果为True
,则返回mimetypes而不是文本描述
mime_encoding
- 如果为True
,则返回编解码器
magic_file
- 使用非系统默认的mime数据库
并根据README
,这是所有至于公共API而言。
Magic
类magic.MAGIC_NONE
内部处理magic.MAGIC_NONE
; 设置mime=True
创建magic.Magic()
实例时会设置magic.MAGIC_MIME
标志为例。
它看起来好像你遇到的代码涵盖了一个完全不同的Python magic
库,它需要更多的内部手持。 我的建议:不要试图复制。 使用这个新的库,它只有记录的API。
上一篇: magic module' object has no attribute 'open'
下一篇: Problems with calling unoconv from a django app, running in an virtualenv