值错误:重命名:ds中嵌入了空字符

2024-05-13 00:02:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图根据元数据重命名我的媒体文件名。在

文件名格式为song name - artist name

import os
from tinytag import TinyTag
import re

for root, dirs, files in os.walk("C:/Users/username/Desktop/Music/"):
    for name in files:
        tag = TinyTag.get(root + "\\" + name)
        if tag.artist != "":
            if name.endswith((".mp3",".m4a")):
                # try:
                file_ext = os.path.splitext(name)[-1]
                old_name = os.path.join(root, name)
                new_name = re.sub(' +', ' ', os.path.join(root, tag.title + " - " + tag.artist + file_ext))
                print(new_name)
                os.rename(old_name, new_name)
                # except:
                    # pass

除了王子的红色小巡洋舰外,所有文件都能正常工作:

^{pr2}$

值误差是什么意思?我注意到在克尔维特后有一个额外的空间。我确实在代码中使用了re.sub来修改文件名。在

暂时忽略try, except,因为代码确实可以处理它。我可以手动更改文件名,因为这是850首歌曲中唯一的一首,但我想知道,以便于将来理解。在

顺便说一句,这是我第一个有用的代码!优化评论是最受欢迎的。在


Tags: path代码nameinimportrenewfor
1条回答
网友
1楼 · 发布于 2024-05-13 00:02:44

你能试着更换这些线路吗

old_name = os.path.join(root, name)
new_name = re.sub(' +', ' ', os.path.join(root, tag.title + " - " + tag.artist + file_ext))

用这些线

^{pr2}$

谢谢

相关问题 更多 >