[英]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
类的信息,所以我继续进行试验和错误,直到我发现它只接受ms
的LP_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.