gpt4 book ai didi

python - 如何使用 python-magic 5.19-1

转载 作者:太空狗 更新时间:2023-10-30 00:32:02 29 4
gpt4 key购买 nike

我需要从 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 的任何信息任何地方,所以我继续反复试验,直到我发现它接受 LP_magic_set 的实例仅适用于 ms .其中一些由模块的方法返回 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'

关于python - 如何使用 python-magic 5.19-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25286176/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com