magic module' object has no attribute 'open'
I am trying to use python-magic package, a wrapper class for libmagic.
I install using "pip install python-magic" but when I test it:
import magic
ms = magic.open(magic.MAGIC_NONE)
ms.load()
it shows that module' object has no attribute 'open'. I searched on google and somebody said that one cause is I do not have a __init__.py file. so I checked my peronsal site-packages directory. I found magic.py, magic.pyc, and a folder python_magic-0.4.3-py2.7.egg-info which just include some text files.
How can I get the __init__.py file? I checked other packages installed, some of them do have such a file.
Thanks.
There is no magic.open()
function. If you check out the python-magic
documentation you can see that it has magic.from_file()
and magic.from_buffer()
functions.
Use magic.from_file()
to test against a path name; the module opens that file for you and and determines the type. Use magic.from_buffer()
to test a byte sequence ( str
in Python 2, bytes
in Python 3).
There is also a magic.Magic()
class that you can instantiate (per thread!) to alter how it operates:
Magic(mime=False, magic_file=None, mime_encoding=False)
documented as:
Create a new libmagic
wrapper.
mime
- if True
, mimetypes are returned instead of textual descriptions
mime_encoding
- if True
, codec is returned
magic_file
- use a mime database other than the system default
and according to the README
, that is all as far as public API is concerned.
The Magic
class handles magic.MAGIC_NONE
internally; setting mime=True
when creating a magic.Magic()
instance will set a magic.MAGIC_MIME
flag for example.
It looks as if the code you encountered covers a different Python magic
library altogether that required more internals hand-holding. My advice: Don't try to replicate that. Use this new library and it's documented API only .
上一篇: 如何确定字符串的内容类型
下一篇: 魔法模块'对象没有属性'打开'