如何用Python批量将文件夹中MP3转为单声道WAV并自定义文件名
解决MP3转单声道WAV并保留对应文件名的问题
我看你的代码核心问题是导出时固定了文件名,导致每次循环都会覆盖之前的转换结果,同时还没实现单声道的转换需求。我帮你调整代码,一次性解决这两个问题:
import os from pydub import AudioSegment # 替换成你的输入文件夹路径和输出文件夹路径(建议分开存放,避免和原文件混淆) input_folder = "你的输入文件夹路径" output_folder = "你的输出文件夹路径" # 确保输出文件夹存在,不存在则自动创建 os.makedirs(output_folder, exist_ok=True) # 遍历文件夹里的所有文件 for filename in os.listdir(input_folder): # 只处理MP3格式文件(忽略大小写,兼容.MP3后缀) if filename.lower().endswith(".mp3"): # 拼接完整的输入文件路径,避免因工作目录问题找不到文件 input_file_path = os.path.join(input_folder, filename) # 生成对应输出文件名:保留原文件名,把后缀换成.wav output_filename = os.path.splitext(filename)[0] + ".wav" output_file_path = os.path.join(output_folder, output_filename) # 加载MP3音频文件 mp3_audio = AudioSegment.from_mp3(input_file_path) # 转换为单声道 mono_audio = mp3_audio.set_channels(1) # 导出为WAV格式 mono_audio.export(output_file_path, format="wav") print(f"转换完成:{output_file_path}")
关键修改点说明:
- 动态生成输出文件名:通过
os.path.splitext(filename)[0]提取原文件名(不含后缀),再拼接.wav后缀,每个MP3都会对应一个同名的WAV文件,不会再被覆盖 - 路径安全处理:用
os.path.join拼接文件夹和文件名,避免因当前工作目录变化导致的文件找不到问题 - 单声道转换:添加
set_channels(1)方法,将立体声音频转为单声道,满足你的需求 - 自动创建输出文件夹:用
os.makedirs(output_folder, exist_ok=True)确保输出目录存在,不用手动创建
另外提醒一下,运行前要确保已经安装了pydub和它依赖的ffmpeg——如果还没装ffmpeg,Windows用户可以下载ffmpeg并添加到系统PATH,Linux/macOS用户可以通过包管理器安装,或者用pip安装对应的依赖包。
内容的提问来源于stack exchange,提问作者Chaitra Murthy
相关产品推荐
相关产品推荐

