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

Trying to access id3 tags of mp3 songs from a folder using a loop

我正在尝试访问文件夹中所有 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 文件,因此不是正确的输入参数。我对此很陌生,希望得到一些帮助。

既然您输入了完整的错误消息,错误就很清楚了:

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

表示调用正确,但您使用的文件名不存在。你在想:"but it came from os.walk() so it must exist!"。是的,但是 os.walk() returns 一个元组列表,每个元组都有三个值: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...) 中缺少前导 /