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

问题描述 投票:0回答:3

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

错误信息:

# 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
>>> 

谢谢大家,现在我可以导入 magic,但是当我将 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 o\magic.mgc")

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

python
3个回答
0
投票

听起来您没有设置正确的依赖关系。您是否按照 github 页面中的安装说明进行操作?

“在 Windows 上,将 magic1.dll、regex2.dll 和 zlib1.dll 从 File for Windows 项目提供的二进制文件和依赖项 zip 文件复制到您的 PATH 中。您需要将文件 magic 从 [binary-zip] 中复制出来\share\misc,并将其位置传递给 Magic(magic_file=...)。如果您使用的是 64 位 Python 版本,则需要 64 位 libmagic 二进制文件,可以在此处找到:https:/ /github.com/pidydx/libmagicwin64(注:未经测试)”


0
投票

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

依赖关系

在 Windows 上,将 magic1.dll、regex2.dll 和 zlib1.dll 从 File for Windows 项目提供的二进制文件和依赖项 zip 文件复制到您的 PATH 中。您需要将文件

magic
[binary-zip]\share\misc
中复制出来,并将其位置传递给
Magic(magic_file=...)
。如果您使用 64 位版本的 python,则需要 64 位 libmagic 二进制文件,可以在此处找到:https://github.com/pidydx/libmagicwin64(注意:未经测试)


0
投票

Step 2 "file_magic = magic.Magic(magic_file="c:path o\magic.mgc"" 这行代码可能会令人困惑。 在您的环境中,您将找到“Lib\site-packages\magic_init_.py”。 在def中,最初magic_file=None。 如果在完成步骤 1 后出现错误,请将文件地址链接到放置 magic.mgc 的位置。 例如。 magic_file="C:\Windows\System32\magic.mgc"。 Win10、Python 3.11

© www.soinside.com 2019 - 2024. All rights reserved.