0

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

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 文件,因此不是正确的输入参数。我对此很陌生,希望能得到一些帮助。

4

1 回答 1

0

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

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

这意味着调用是正确的,但您使用的文件名不存在。你在想:“但它来自os.walk()所以它必须存在!”。是的,但是os.walk()返回一个元组列表,每个值三个值:root, dirs, files. files名称列表是目录中的文件名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...)

于 2017-09-24T20:53:39.277 回答