Python:如何对指定文件夹内所有MP4文件执行批量转换操作?
代码问题及修复实现
原代码核心问题
- 遍历对象错误:
for filename in folpath中folpath是路径字符串,遍历会逐字符读取,永远不会匹配到.mp4后缀,导致判断分支完全不执行 - 参数类型不匹配:将
glob返回的文件列表直接传入AudioFileClip,该方法仅接收单个文件路径字符串 - 输出路径未动态生成:未对输出音频路径做占位符填充,多文件处理时会出现文件覆盖问题
- 路径拼接不规范:直接用字符串拼接路径容易触发转义字符问题,且没有直接过滤mp4文件增加冗余判断
正确实现代码
import glob import os from moviepy.editor import AudioFileClip folpath = r'\\path' # 直接过滤目标文件夹下的所有mp4文件 mp4_files = glob.glob(os.path.join(folpath, "*.mp4")) for video_path in mp4_files: # 提取无后缀的文件名,用于生成对应wav文件名 file_basename = os.path.splitext(os.path.basename(video_path))[0] # 拼接输出音频路径,保存在同目录下,和原视频同名 audio_output_path = os.path.join(folpath, f"{file_basename}_speech.wav") # 提取音频并写入 audioclip = AudioFileClip(video_path) audioclip.write_audiofile(audio_output_path) # 释放资源避免内存占用 audioclip.close()
补充说明
- 如果需要自定义输出路径,直接修改
audio_output_path的拼接规则即可 - 批量处理前可以先打印
mp4_files确认读取到的文件列表是否符合预期,避免路径错误读取不到文件
内容的提问来源于stack exchange,提问作者beepofwaste
相关产品推荐
相关产品推荐

