【问题标题】:Trying to access id3 tags of mp3 songs from a folder using a loop尝试使用循环从文件夹中访问 mp3 歌曲的 id3 标签
【发布时间】:2017-09-25 04:53:39
【问题描述】:

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

【问题讨论】:

  • 您告诉我们您认为错误意味着什么,但随后您说您不理解它。您还应该复制完整的错误消息。
  • /usr/bin/python2.7 /home/undead/PycharmProjects/KavTest/Test1.py 回溯(最后一次调用):文件“/home/undead/PycharmProjects/KavTest/Test1.py ",第 25 行,在 audiofile = eyeD3.Mp3AudioFile(file) File "/usr/lib/python2.7/dist-packages/eyeD3/tag.py",第 1653 行,在 init f = 文件(self.fileName,“rb”); IOError: [Errno 2] No such file or directory: '01 California Dreaming (copy).mp3'

标签: python directory eyed3


【解决方案1】:

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

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...) 中是否缺少前导/

【讨论】:

  • 这已纠正错误。通过添加将“文件”链接到它指向的实际文件的路径...行是否正确?也非常感谢你:)
  • 不客气!但我不这么认为,linking 在谈论文件时有不同的具体含义(详见hard linksymbolic link) .在您的程序中,rootfilepath 是包含所需文件名称(或部分名称)的文本字符串。你可以说path引用实际文件,或者它包含文件名,甚至它指向文件。
  • 自然file也包含了文件的名字,但是没有用,因为那个名字是相对于root的,而当你使用相对名字作为文件名的时候,它就是总是被解释为相对于当前工作目录 (CWD)。因此,除非您的 CWD 等于 root,否则它将无法正常工作。通过加入root 加上file,您可以使path 成为绝对名称或相对于实际CWD 的名称,具体取决于您传递给os.walk() 的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-12
  • 1970-01-01
  • 1970-01-01
  • 2011-10-09
  • 2011-09-14
  • 1970-01-01
  • 2013-08-20
相关资源
最近更新 更多