Python eyed3 检查嵌入的图片
我需要一个脚本,能够检查整个文件夹里的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
……
1 个回答
0
我觉得你遇到的问题是,你正在处理的一些mp3文件没有ID3标签。ID3标签就像是音乐文件的身份证,里面存储了歌曲的名称、艺术家等信息。当这些mp3文件没有ID3标签时,eyeD3就会返回None
,这意味着没有找到标签值,这样就导致你的程序崩溃了。