尝试使用循环从文件夹中访问mp3歌曲的id3标签

时间:2017-09-24 20:35:38

标签: python directory eyed3

我正在尝试访问文件夹中所有mp3歌曲的元数据。我正在使用Ubuntu 16.04 Virtualbox和eyed3 0.6.18-1以及windows和ubuntu之间的共享文件夹。我尝试了以下方法:

import os
import eyeD3

for root, dir, files in os.walk("home/undead/ShareWindowsTest")":
   for file in files:
      if file.endswith(".mp3"):
          audiofile = eyeD3.Mp3AudioFile(file)
          print audiofile.tag.getTitle()

应该打印文件夹中每首歌曲的标题。但是这不起作用。我尝试使用

if eyed3.isMp3File(file): 

但仍然没有运气。该错误特别出现在audiofile = ...行中,其中“file”似乎是一个字符串而不是一个mp3文件,因此不是一个正确的输入参数。我对此非常陌生,并希望得到一些帮助。

1 个答案:

答案 0 :(得分:0)

现在您输入了完整的错误消息,错误很明显:

No such file or directory: '01 California Dreaming (copy).mp3'

这意味着调用正确但您使用的文件名不存在。你在想:"但它来自os.walk()所以它必须存在!"。是的,但是os.walk()会返回一个元组列表,每个元组都有三个值:root, dirs, filesfiles名称列表是root目录中的文件名。

解决方案:您必须连接rootfile名称:

for root, dir, files in os.walk("home/undead/ShareWindowsTest")":
    for file in files:
        path = os.path.join(root, file)
        audiofile = eyeD3.Mp3AudioFile(path)

PS:你错过了/中的领先os.walk("/home...)吗?