2014-03-12 40 views
0

我需要一個腳本來檢查沒有嵌入式圖像的MP3文件的整個目錄。 這個函數應該返回這樣一個列表。Python eyed3檢查嵌入式圖像

def checkAlbumCover(file_list): 
    ret = list() #list with mp3 files without album cover 
    for f in file_list: 
     mp3 = eyed3.load(f) 
     if len(mp3.tag.images) == 0: 
      ret.append(f) 
    return ret 

使用另一個函數,我遍歷每個目錄和子目錄並獲取所有文件路徑。然後我檢查它們是否是mp3文件,如果不是,我刪除它們。所以最後我有一個包含173個mp3文件的列表(在我的情況下)。文件路徑是正確的,但是,上面的功能給我錯誤。

輸出:

173 mp3 files found. 
Traceback (most recent call last): 
    File "get_album.py", line 32, in <module> 
    main() 
    File "get_album.py", line 18, in main 
    list_without_image = checkAlbumCover(all_files) 
    File "get_album.py", line 10, in checkAlbumArt 
    if len(mp3.tag.images) == 0: # 0 images embedded 
AttributeError: 'NoneType' object has no attribute 'images' 

我做了什麼錯?

編輯: 我打印出來f檢查圖像之前,似乎我已經功能檢查20〜文件崩潰之前。

我「固定」它:

if mp3.tag is None: # 0 images embedded 
    ret.append(f) 

不過,我真的不明白爲什麼tagNone ...

回答

0

我相信你正在運行成什麼樣是,一些MP3的的你正在使用沒有ID3標籤。如果是這種情況,eyeD3會爲其標記值返回None,這會導致程序崩潰。