求Python代码:批量将文件夹内MP4文件转换为MP3并输出至其他文件夹
批量将MP4转换为MP3的修正方案
我帮你梳理下原代码里的问题,然后给出可以直接运行的修正版本:
修正后的完整代码
import os import re import moviepy.editor as mp # 源MP4文件夹路径 src_folder = "D:/Music/video" # 目标MP3输出文件夹路径 dst_folder = "D:/Music/mp3" # 确保目标文件夹存在,不存在则自动创建 os.makedirs(dst_folder, exist_ok=True) # 遍历文件夹中所有后缀为MP4的文件(忽略大小写) for file in [n for n in os.listdir(src_folder) if re.search(r'\.mp4$', n, re.IGNORECASE)]: # 构建源文件的完整路径 full_path = os.path.join(src_folder, file) # 构建目标MP3文件的完整路径(保留原文件名,替换后缀) mp3_filename = os.path.splitext(file)[0] + '.mp3' output_path = os.path.join(dst_folder, mp3_filename) # 加载音频剪辑:如果不需要裁剪,直接去掉`.subclip(10)`即可 clip = mp.AudioFileClip(full_path).subclip(10) # 从第10秒开始截取到结尾 # 不需要裁剪的话,替换成这行:clip = mp.AudioFileClip(full_path) # 写入MP3文件到目标路径 clip.write_audiofile(output_path) # 释放资源,避免循环处理时内存占用过高 clip.close()
原代码中的关键问题说明
- 缺失模块导入:你用到了
os模块的方法但没有导入os,这会直接触发NameError - 输出路径错误:
write_audiofile()需要传入具体的文件路径(比如D:/Music/mp3/test.mp3),而不是文件夹路径,原代码传入文件夹会导致无法生成文件 - MP4文件匹配不严谨:原代码的
re.search('mp4',n)会匹配所有包含"mp4"字符串的文件(比如testmp4.txt),修正后的正则可以精确匹配后缀为.mp4/.MP4的文件 - 目标文件夹未预创建:如果
D:/Music/mp3不存在,程序会报路径错误,os.makedirs()可以自动创建文件夹 - 未释放资源:循环处理多个文件时,调用
clip.close()能避免内存占用过高
内容的提问来源于stack exchange,提问作者Zhihan
相关产品推荐
相关产品推荐

