You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 15:17:44