【问题标题】:What does "raw image data, as a byte string" mean?“原始图像数据,作为字节字符串”是什么意思?
【发布时间】:2015-06-25 09:43:23
【问题描述】:

我正在做一个程序来使用 Python 编辑 mp3 上的标签,现在我正在使用 mutagen 模块,为了使用 id3v4 标准将图像作为封面嵌入到 mp3 文件中,我必须添加 APIC 框架@ 987654321@.

但我不明白我必须在参数encodingmimedata 中输入什么。

我从这里查看了一个示例并想出了这个:

frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg"))

但我不知道前 3 个是什么意思?为什么当我输入"utf-8" 时它不起作用?而open() 函数不起作用,它返回如下错误:

Traceback (most recent call last):
  File "<pyshell#104>", line 1, in <module>
    frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg"))
  File "C:\Python34\lib\site-packages\mutagen\id3\_frames.py", line 65, in __init__
    setattr(self, checker.name, checker.validate(self, val))
  File "C:\Python34\lib\site-packages\mutagen\id3\_specs.py", line 184, in validate
    raise TypeError("%s has to be bytes" % self.name)
TypeError: data has to be bytes

当我把"b"

frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg","b"))

返回

Traceback (most recent call last):
  File "<pyshell#106>", line 1, in <module>
    frame= APIC("utf-8","image/jpg",3,"Cover",open("albumcover.jpg","b"))
ValueError: Must have exactly one of create/read/write/append mode and at most one plus

那我应该放什么?

我也尝试了open("albumcover.jpg").read(),但它不起作用。

【问题讨论】:

标签: python mp3 id3 mutagen


【解决方案1】:

您需要以 - read (rb) 或 write (wb) 或 append (ab) 模式(b - 表示它是二进制文件并且我们从中读取字节)打开文件而不是字符串)。

对于你的情况,我认为read 模式就足够了,所以试试 -

frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg","rb").read())

rb 表示我们需要以读取模式打开文件并且它是一个二进制文件,对其调用.read() 函数会导致它从文件中读取字节并返回它。

【讨论】:

  • 很高兴它对您有用,建议您接受答案,因为这将帮助可能有类似问题的其他人以及整个社区(不仅仅是这个问题,所有问题)。
【解决方案2】:

参数3表示专辑封面read the documentation

【讨论】:

  • 这是第二个 3,我的意思是前 3 个,前 3 个是做什么的?
猜你喜欢
  • 1970-01-01
  • 2017-01-21
  • 1970-01-01
  • 2019-11-04
  • 2011-09-10
  • 1970-01-01
  • 2018-05-01
  • 2012-05-25
相关资源
最近更新 更多