我正在尝试访问文件夹中所有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文件,因此不是一个正确的输入参数。我对此非常陌生,并希望得到一些帮助。
答案 0 :(得分:0)
现在您输入了完整的错误消息,错误很明显:
No such file or directory: '01 California Dreaming (copy).mp3'
这意味着调用正确但您使用的文件名不存在。你在想:"但它来自os.walk()
所以它必须存在!"。是的,但是os.walk()
会返回一个元组列表,每个元组都有三个值:root, dirs, files
。 files
名称列表是root
目录中的文件名。
解决方案:您必须连接root
和file
名称:
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...)
吗?