我正在做一个用Python编辑mp3标签的程序,现在我正在使用mutagen模块,为了使用id3v4标准将图像作为封面艺术嵌入到mp3文件中,我必须添加APIC框架{ {3}}
但我不明白我必须在参数encoding
,mime
和data
中加入什么。
我从这里看了一个例子,想出了这个:
frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg"))
但我不知道前三个意味着什么?为什么当我放"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()
,但它不起作用。
答案 0 :(得分:0)
您需要以 - read
(rb)或write
(wb)或append
(ab)模式之一打开文件(b - 表示它是二进制文件和我们从中读取字节而不是字符串)。
对于您的情况,我认为read
模式就足够了,所以请尝试 -
frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg","rb").read())
rb
表示我们需要以读取模式打开文件并且它是一个二进制文件,调用它上面的.read()
函数会导致它从文件中读取字节并将其返回
答案 1 :(得分:0)
参数3
表示它是专辑的封面read the documentation。