0

我正在尝试使用以下代码从 MP3 文件中读取封面。

import tkinter as tk
from PIL import Image, ImageTk
from io import BytesIO
import mutagen
from mutagen.id3 import APIC

root = tk.Tk()
image_bytes = mutagen.File('/Users/id3-sample.mp3')['APIC:'].data 
image_stream = BytesIO(image_bytes)
img = ImageTk.PhotoImage(Image.open(image_stream))
tk.Label(root, image = img).pack() 

但我收到以下错误消息:

File  "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mutagen/_util.py", line 536, in __getitem__
return self.__dict[key]
builtins.KeyError: 'APIC:'
4

2 回答 2

0

您可以使用 Mutagen 的 File、Picture 类。通过foosion查看这个答案。

于 2019-06-22T07:03:58.450 回答
0

KeyError您获得的异常类型是由__getitem__类型对象的方法引发的,当您尝试dict使用语法访问以读取未存储在字典中的键的值时。dictionary[key]

正如@Thierry Lathuille 在评论中指出的那样,在您的代码中,您正在犯这个错误。您正在尝试访问以读取APIC:未存储到mutagen.File支持属性检索类型的对象中的键的值__getitem__(如字典一样)。正确的键应该是APIC.

...
image_bytes = mutagen.File('/Users/id3-sample.mp3')['APIC'].data 
...
于 2019-06-22T07:04:21.217 回答