繁体   English   中英

如何使用python-magic 5.19-1

[英]How to use 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类,我在这里找到了文档: http//filemagic.readthedocs.org/en/latest/guide.html

我很惊讶,这也不起作用:

>>> with magic.Magic() as m:
...     pass
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __init__() missing 1 required positional argument: 'ms'
>>> m = magic.Magic()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __init__() missing 1 required positional argument: 'ms'
>>> 

我找不到任何关于如何在任何地方使用Magic类的信息,所以我继续进行试验和错误,直到我发现它只接受msLP_magic_set实例。 其中一些是由模块的方法magic.magic_set()magic_t() 所以我试图将Magic与其中任何一个实例化。 当我从实例调用file()方法时,它将始终返回一个空结果,并且errlvl()方法告诉我错误号。 22.那我怎么用魔法呢?

我认为你混淆了“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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM