如何使用Python os模块批量重命名文件(修改部分文件名)
批量重命名歌曲文件解决方案
你原有代码的核心问题有两个:
os.getcwd()仅返回当前工作目录的路径字符串,不会返回目录下的文件列表,你需要先遍历目录内的所有文件逐个处理os.rename()需要接收两个参数:原文件的完整路径、重命名后文件的完整路径,部分修改文件名的本质是先读取原文件名,通过字符串处理得到目标名称,再传入方法完成替换。
完整实现代码
import os # 若脚本直接放在歌曲文件夹内运行,直接用os.getcwd()获取路径即可 # 也可手动填写歌曲文件夹绝对路径,例:music_dir = "D:/我的音乐/收藏歌单" music_dir = os.getcwd() for filename in os.listdir(music_dir): old_file_path = os.path.join(music_dir, filename) # 跳过子目录,仅处理文件 if os.path.isdir(old_file_path): continue # 拆分主文件名和后缀名,例:将"Smooth Criminal, Michael Jackson.flac"拆为名称和.flac file_main_name, file_ext = os.path.splitext(filename) # 过滤不符合"歌曲名, 歌手名"格式的文件,避免运行报错 if ", " not in file_main_name: print(f"跳过格式不匹配文件:{filename}") continue # 仅按第一个", "拆分,兼容歌曲名本身带逗号的场景 song_title, artist = file_main_name.split(", ", 1) # 拼接符合要求的新文件名 new_file_name = f"{song_title} ({artist}){file_ext}" new_file_path = os.path.join(music_dir, new_file_name) # 执行重命名 os.rename(old_file_path, new_file_path) print(f"重命名完成:{filename} -> {new_file_name}")
运行注意事项
首次运行建议先把代码里的
os.rename(old_file_path, new_file_path)这行注释掉,先执行一次查看控制台打印的新旧文件名对应关系,确认命名规则符合预期后再放开注释执行,避免误改文件。运行前备份一次歌曲文件更稳妥。
内容的提问来源于stack exchange,提问作者K. M.
相关产品推荐
相关产品推荐

