我正在研究一个有用的脚本,该脚本使用audio_metadata
库基于歌曲的标签来重命名mp3文件。
我已经尝试过使用os.rename
和使用os.system('ren "FILENAME" "NEWNAME"')
。
我的代码:
import os
import audio_metadata
for x in range(len(songs)):
song = songs[x]
metadata = audio_metadata.load('%s' % song)
titlel = metadata['tags'].title
artistl = metadata['tags'].artist
title = titlel[0].strip()
artist = artistl[0].strip()
newname = '%s - %s.mp3' % (title, artist)
print("[*] %s => %s" % (song, newname))
os.rename(song, newname)
我希望:
your love.mp3 => Your Love-The Outfield.mp3
但是我明白了:
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process:
'your love.mp3' -> "Your Love-The Outfield.mp3"
答案 0 :(得分:1)
调用audio_metadata
后,metadata = audio_metadata.load('%s' % song)
是否有可能在读取后没有正确关闭文件对象?我快速浏览了audio_metadata source,看来您可以传递文件对象而不是文件路径字符串。
尝试以这种方式获取元数据:
with open('%s' % song, 'rb') as f:
metadata = audio_metadata.load(f)
答案 1 :(得分:0)
如果您正在通过VS调试器运行,那么我也遇到了类似的问题,我的解决方案是确保没有其他exe实例在后台进程中秘密运行(如任务管理器所示)。使用FMOD时遇到该问题,不确定是否有帮助?