3

.py 文件中此代码的第一行返回错误。

mime = magic.Magic(mime=True)
content_type = mime.from_buffer((data).read(1024))
request.session['content_type'] = content_type
if content_type == 'application/pdf' or content_type == 'application/msword':
    request.session['upload_status'] = "Content type is valid according to (MAGIC)"

错误信息是 __init__() got an unexpected keyword argument 'mime'

我正在使用 Django 1.4.1 和 Python 2.7.3。我安装了魔法。不知道出了什么问题 - 任何帮助表示赞赏!

4

4 回答 4

4

只是在黑暗中刺伤,但文档建议您不应该Magic直接实例化该类。

import magic
magic.from_buffer(open("testdata/test.pdf").read(1024))
于 2012-09-26T19:58:30.833 回答
1

Magic 对象的构造函数不接受名为“mime”的参数。我建议用 help(magic.Magic); 查看文档字符串。它可能会给你一个线索。

于 2012-09-26T19:59:36.430 回答
1

根据上面的建议,如果与 JIRA 服务器的连接失败并出现错误:

The error message is __init__() got an unexpected keyword argument 'mime'

然后去编辑

/usr/lib/python2.7/site-packages/jira/client.py 

代替

self._magic = magic.Magic(mime=True)

self._magic = magic

然后像这样运行代码:

from jira.client import JIRA
import magic
...
jira = JIRA(options={'server':'https://jira.server.goes.here'}, basic_auth=(options.username, options.password))

我正在使用带有 jira-python 的 python 2.7.3 ( http://jira-python.readthedocs.org/en/latest/ )

于 2013-07-16T19:06:13.737 回答
0

您很可能有另一个版本的magic. 如果我上次查看这些东西时没记错的话,Ubuntu 附带了一个不同的版本(也许,还有一个叫做 的东西filemagic)。开箱即用的 Cygwin 版本也是如此。那是我的情况。

我重新安装了 Cygwin 并遇到了同样的问题 - Python 的两个版本magic/ python-magic/ filemagic。我在这里查看了 SO 的解决方案,但没有很快找到。幸运的是,我保留了以前的笔记,对我有用的解决方案是:

$ sudo pip3 uninstall filemagic
$ sudo pip3 install python-magic 

或者,什么在我的 Cygwin 安装上效果更好:

$ python -m pip uninstall filemagic
$ python -m pip install python-magic

这解决了我的问题。

当我搜索有关此问题的更多信息时,我在 github 上发现了一个非常相似的解决方案已存档) 。还有一个额外的步骤。

卸载文件魔术:

sudo pip3 uninstall filemagic

卸载python-magic:

sudo pip3 uninstall python-magic

(可能的补充)

sudo apt-get uninstall python-magic

安装python-magic:

sudo pip3 install python-magic

通过快速搜索,我找不到两个版本的详细信息magic。我刚刚在线程上发现一些评论说,“你必须有其他版本的magic”,或者“你必须有不同版本的magic”。

编辑 我已经用magic来源更新了这个答案。由此看来,您可能必须在安装之前执行另一个python-magic命令pip

sudo apt-get uninstall python-magic

如上所述。


编辑

我发现有关其不同版本的详细信息随处magic可见。

我有以下三个链接(第一第二第三

基本上,有两个版本。获得最多支持的是 PYPI,而且(在我看来)使用得更频繁。目前是v.0.4.15(2020-02-19),它的github页面是第一个链接。在该页面上,您可以阅读以下内容:

名称冲突

遗憾的是,有两个库使用模块名称magic。两者都已经存在了很长一段时间。如果您正在使用此模块并使用类似的方法出现错误open,则您的代码需要另一个。希望有朝一日,这些会被调和。

第二个版本似乎引起了最多的问题,目前是 (2020-02-19) v5.25。根据第三个链接和我自己的研究,sudo apt-get install python-magic在某些版本的 Ubuntu 上使用时会安装这个。(在此处查看来自 Ubuntu 的一些可能的详细信息。)

在第二个链接中可以找到所有这一切的最佳解释。支持@mhawke 很好地解释事情。

以下是上述链接的归档版本:第一个归档,第二个归档,第三个归档,Ubuntu 信息归档

于 2020-01-18T01:25:26.500 回答