我需要一个脚本来检查整个目录中没有嵌入图像的mp3文件。 这个函数应该返回这样一个列表。
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 )
但是,我真的不明白为什么tag
是None
...
答案 0 :(得分:0)
我相信你遇到的是你正在使用的一些mp3没有ID3标签。在这种情况下,eyeD3会返回None
作为其标记值,这会导致程序崩溃。