"raw image data, as a byte string" 是什么意思?
What does "raw image data, as a byte string" mean?
我正在做一个程序来使用 Python 编辑 mp3 上的标签,现在我正在使用 mutagen 模块,为了使用我拥有的 id3v4 标准将图像作为封面艺术嵌入到 mp3 文件中添加 APIC 框架 using this.
但我不明白我必须在参数 encoding
、mime
和 data
.
中输入什么
我从这里看了一个例子并想出了这个:
frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg"))
但是我不知道前3个是什么意思?为什么当我输入 "utf-8"
它不起作用? open()
函数不起作用,它 returns 像这样的错误:
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"))
它returns
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()
但没用。
您需要以 - read
(rb) 或 write
(wb) 或 append
(ab) 模式之一打开文件(b - 表明它是一个二进制文件文件,我们从中读取字节而不是字符串)。
对于你的情况,我认为 read
模式就足够了,所以试试 -
frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg","rb").read())
rb
表示我们需要以读取模式打开文件并且它是一个二进制文件,对其调用 .read()
函数使其从文件中读取字节并且return它。
参数3
表示专辑封面,read the documentation。
我正在做一个程序来使用 Python 编辑 mp3 上的标签,现在我正在使用 mutagen 模块,为了使用我拥有的 id3v4 标准将图像作为封面艺术嵌入到 mp3 文件中添加 APIC 框架 using this.
但我不明白我必须在参数 encoding
、mime
和 data
.
我从这里看了一个例子并想出了这个:
frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg"))
但是我不知道前3个是什么意思?为什么当我输入 "utf-8"
它不起作用? open()
函数不起作用,它 returns 像这样的错误:
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"))
它returns
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()
但没用。
您需要以 - read
(rb) 或 write
(wb) 或 append
(ab) 模式之一打开文件(b - 表明它是一个二进制文件文件,我们从中读取字节而不是字符串)。
对于你的情况,我认为 read
模式就足够了,所以试试 -
frame= APIC(3,"image/jpg",3,"Cover",open("albumcover.jpg","rb").read())
rb
表示我们需要以读取模式打开文件并且它是一个二进制文件,对其调用 .read()
函数使其从文件中读取字节并且return它。
参数3
表示专辑封面,read the documentation。