2013-07-21 27 views
3

我使用Python的mutagen模塊來獲取我擁有的各種MP3文件的藝術家。什麼是「TPE1」KeyError?

這裏是給錯誤代碼:

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

的代碼工作的大部分我的MP3文件,但也有少數,不斷提供以下錯誤:

KeyError: 'TPE1'

而且因爲那個錯誤,我看不到藝術家。請注意,這些MP3文件都有一位藝術家,並且他們都沒有特殊字符或類似的東西。

這是怎麼發生的?我該如何解決它?

感謝

+0

這是一個'KeyError'。因此,某處某處正在訪問某種類型的容器中的密鑰「TPE1」,可能是字典,它不在那裏。您只發布了回溯中最沒有用的部分,即錯誤消息,因此任何人都無法猜測問題出在哪裏。 – kindall

+0

這是因爲您沒有使用原始字符串作爲路徑。 模塊,無法解析,拋出一個KeyError – P0W

回答

2

最有可能的,你'尋找在誘變劑id3詞典中不存在的鍵。難道像你這樣一個簡單的檢查會爲一個普通的字典做:

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

我一直有和沒有保證的說法是Unicode嘗試,它在這兩種情況下可與Python 2.7.3

0

此錯誤,如果您使用的是Python版本低於3.0通常發生。您需要確保mutagen音頻函數的參數是一個Unicode字符串。因此,使用

音頻= EasyID3(C:\用戶\用戶\音樂\音樂\藍牡蠣崇拜\藍牡蠣崇拜\城市火焰) 打印音頻[U 「藝術家」]

0

這可能是因爲你通過文件屬性/細節手動刪除它的值。
這就是我發生的事情(使用Python 3.4)。

您可以通過下面的重新定義鍵:

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

如果這是它應該重新工作的原因。