我正在尝试使用以下代码从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:'
答案 0 :(得分:0)
您可以使用Mutagen的文件,图片类。 通过foosion签出此答案。
答案 1 :(得分:0)
当您使用语法KeyError
尝试访问以下类型的对象时,类型__getitem__
的对象的dict
方法引发的异常类型dictionary[key]
读取未存储在字典中的键的值。
在您的代码中,正如@Thierry Lathuille在注释中指出的那样,您正在执行此错误。您正在尝试访问以读取键APIC:
的值,该值没有存储到支持通过mutagen.File
方法进行属性检索的__getitem__
类型的对象中(如字典一样)。正确的密钥应为APIC
。
...
image_bytes = mutagen.File('/Users/id3-sample.mp3')['APIC'].data
...