如何使用python-magic 5.19-1
我需要在
python3中从没有后缀的文件中确定MIME类型,我认为python-magic是一个合适的解决方案.
不幸的是它不能像这里描述的那样工作: https://github.com/ahupp/python-magic/blob/master/README.md 这是怎么回事: >>> import magic >>> magic.from_file("testdata/test.pdf") Traceback (most recent call last): File "<stdin>",line 1,in <module> AttributeError: 'module' object has no attribute 'from_file' 所以我看了一下这个对象,它为我提供了Magic类,我在这里找到了文档: 我很惊讶,这也不起作用: >>> with magic.Magic() as m: ... pass ... Traceback (most recent call last): File "<stdin>",in <module> TypeError: __init__() missing 1 required positional argument: 'ms' >>> m = magic.Magic() Traceback (most recent call last): File "<stdin>",in <module> TypeError: __init__() missing 1 required positional argument: 'ms' >>> 我找不到任何关于如何在任何地方使用Magic类的信息,所以我继续进行试验和错误,直到我发现它只接受ms的LP_magic_set实例. 解决方法
我认为你混淆了“python-magic”的不同实现
您似乎已经安装了python-magic-5.19.1,但是,您首先参考了python-magic-0.4.6的文档,其次是filemagic-1.6.我认为您最好使用python-magic-0.4.6,因为它可以在PYPI上轻松获得并通过pip轻松安装到virtualenv环境. python-magic-5.19.1的文档很难得到,但我设法让它像这样工作: >>> import magic >>> m=magic.open(magic.MAGIC_NONE) >>> m.load() 0 >>> m.file('/etc/passwd') 'ASCII text' >>> m.file('/usr/share/cups/data/default.pdf') 'PDF document,version 1.5' 您还可以获得不同的魔术描述,例如: MIME类型: >>> m=magic.open(magic.MAGIC_MIME) >>> m.load() 0 >>> m.file('/etc/passwd') 'text/plain; charset=us-ascii' >>> m.file('/usr/share/cups/data/default.pdf') 'application/pdf; charset=binary' 或者更新版本的python-magic-5.30 >>> import magic >>> magic.detect_from_filename('/etc/passwd') FileMagic(mime_type='text/plain',encoding='us-ascii',name='ASCII text') >>> magic.detect_from_filename('/etc/passwd').mime_type 'text/plain' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |