尝试使用循环从文件夹访问 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, 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...)
中缺少前导 /
?
我正在尝试访问文件夹中所有 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, 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...)
中缺少前导 /
?