尝试使用python-magic识别Windows上的文件类型时获取错误消息

时间:2017-01-30 22:42:36

标签: python

我是Python的新手,拥有一些C ++知识。我在尝试设置python-magic来识别文件类型时收到以下错误消息。我已经使用pip安装了python-magic和libmagic。一旦我尝试导入魔术,我会收到错误消息,提示我检查我的安装。

错误讯息:

# python
>>> import magic
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import magic
  File "C:\Users\adamh\AppData\Local\Programs\Python\Python35\lib\site-packages\magic.py", line 173, in <module>
    raise ImportError('failed to find libmagic.  Check your installation')
ImportError: failed to find libmagic.  Check your installation
>>> 

谢谢大家,现在我能够导入魔法,但是当我在将magic1.dll和libgnurx-0.dll文件放入之后尝试输入magic.from_file(“userinput.py”)时,我收到另一条错误消息我的 C:\ Windows \ System32文件夹。错误信息如下:

# python

>>> import magic
>>> magic.from_file("userinput.py")
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
magic.from_file("userinput.py")
File "C:\Users\adamh\AppData\Local\Programs\Python\Python35\lib\site-packages\magic.py", line 130, in from_file
m = _get_magic_type(mime)
File "C:\Users\adamh\AppData\Local\Programs\Python\Python35\lib\site-packages\magic.py", line 118, in _get_magic_type
i = _instances[mime] = Magic(mime=mime)
File "C:\Users\adamh\AppData\Local\Programs\Python\Python35\lib\site-packages\magic.py", line 67, in __init__
magic_load(self.cookie, magic_file)
File "C:\Users\adamh\AppData\Local\Programs\Python\Python35\lib\site-packages\magic.py", line 256, in magic_load
return _magic_load(cookie, coerce_filename(filename))
File "C:\Users\adamh\AppData\Local\Programs\Python\Python35\lib\site-packages\magic.py", line 187, in errorcheck_negative_one
raise MagicException(err)
magic.MagicException
>>> 

我认为问题是我无法使用以下伪命令传递magic.mgc的位置:file_magic = magic.Magic(magic_file =“c:path \ to \ magic.mgc”)

任何进一步的帮助将不胜感激。谢谢大家。

2 个答案:

答案 0 :(得分:0)

听起来您没有设置正确的依赖项。您是否遵循了github page

中的安装说明

“在Windows上,将magic1.dll,regex2.dll和zlib1.dll从File for Windows项目提供的Binaries and Dependencies zipfiles复制到PATH上。您需要复制文件魔术[二进制 - zip] \ share \ misc,并将它的位置传递给Magic(magic_file = ...)。如果你使用64位构建的python,你需要64位libmagic二进制文件,可以在这里找到:{{ 3}}(注意:未经测试)“

答案 1 :(得分:0)

来自https://github.com/ahupp/python-magic#dependencies

依赖关系

在Windows上,从File for Windows项目提供的Binaries and Dependencies zipfiles将magic1.dll,regex2.dll和zlib1.dll复制到PATH上。您需要将文件magic[binary-zip]\share\misc复制出来,并将其传递给Magic(magic_file=...)。如果你使用64位构建的python,你需要64位libmagic二进制文件,可以在这里找到:https://github.com/pidydx/libmagicwin64(注意:未经测试)