【问题标题】:What is the "TPE1" KeyError?什么是“TPE1”KeyError?
【发布时间】:2013-07-20 13:48:38
【问题描述】:

我正在使用 Python 的 mutagen 模块来获取我拥有的各种 MP3 文件的艺术家。

这是给出错误的代码:

audio = EasyID3(C:\Users\Owner\Music\Music\Blue Öyster Cult\Blue Öyster Cult\Cities on Flame)
print audio["artist"]

该代码适用于我的大多数 MP3 文件,但有少数几个会不断出现以下错误:

KeyError: 'TPE1'

由于那个错误,我看不到艺术家。请注意,这些 MP3 文件都有一个艺术家,它们都没有特殊字符或类似的东西。

为什么会这样?我该如何解决?

谢谢

【问题讨论】:

  • 这是一个KeyError。因此,某处的某处正在访问某种容器(可能是字典)中的密钥"TPE1",但它不存在。您只发布了回溯中最没用的部分,即错误消息,因此任何人都无法猜测问题出在哪里。
  • 这是因为您没有使用原始字符串作为路径。模块,无法解析,抛出 KeyError

标签: python mp3 id3 mutagen


【解决方案1】:

很可能,您正在寻找一个在 mutagen id3 字典中不存在的键。像检查普通字典一样做一个简单的检查:

if 'artist' in audio:
  print audio['artist']

我已经尝试过和不确保参数是 Unicode 并且它在 Python 2.7.3 的两种情况下都有效

【讨论】:

    【解决方案2】:

    这可能是因为您通过文件属性/详细信息手动删除了它的值。
    这就是发生在我身上的事情(使用 Python 3.4)。

    您可以通过以下方式重新定义密钥:

    if not 'keyname' in Dic:
         'keyname' = ""
    

    如果这是它应该再次工作的原因。

    【讨论】:

      【解决方案3】:

      如果您使用的 Python 版本低于 3.0,通常会发生此错误。您需要确保 mutagen 音频函数的参数是 Unicode 字符串。所以使用

      音频 = EasyID3(C:\Users\Owner\Music\Music\Blue Öyster Cult\Blue Öyster Cult\Cities on Flame) 打印音频[U"艺术家"]

      【讨论】:

        猜你喜欢
        • 2015-12-15
        • 2017-04-25
        • 1970-01-01
        • 2020-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-03
        • 2016-04-19
        相关资源
        最近更新 更多