现在文件夹中有多个子文件夹,里面有mp4视频文件,都需要转换成mp3文件
在Deepseek中输入提示词:
你是一个Python编程专家,写一个脚本,将下面这些文件夹中的mp4视频文件全部转换为mp3音频文件,转换完成后,删除mp4视频文件:
"E:\little fox 动画\AR4.8 Sherlock Holmes【501.56MB】"
"E:\little fox 动画\AR5.0 Great Expectations【376.54MB】"
"E:\little fox 动画\AR5.0 Les Misérables 悲惨世界"
"E:\little fox 动画\AR5.2 O. Henry"
"E:\little fox 动画\AR5.7海底两万里 20,000 Leagues Under the Sea ※※※"
"E:\little fox 动画\AR5.9 Arsène Lupin【283.96MB】 大盗"
"E:\little fox 动画\AR6.1 Dracula【128.89MB】"
"E:\little fox 动画\AR6.2 Oscar Wilde【117.69MB】"
"E:\little fox 动画\AR6.2 Our World Landmarks【549.65MB】"
"E:\little fox 动画\AR6.5 Greek Myths【158.26MB】"
"E:\little fox 动画\AR7.3 Famous Disasters【149.56MB】"
程序运行后总是出现问题:
Traceback (most recent call last):
File "d:\Python\Untitled-166.py", line 4, in <module>
from moviepy.editor import AudioFileClip
ModuleNotFoundError: No module named 'moviepy.editor'
moviepy库安装不成功,最后和Deepseek多次沟通下,终于找到问题:
问题根源
版本兼容性问题:
你安装的是 moviepy 2.1.2,但该版本可能已移除 editor.py 或重构了模块结构。
官方文档显示,AudioFileClip 应从 moviepy.editor 导入,但此文件在 2.1.2 版本中不存在。
文件缺失:
目录中缺少以下关键文件:
markdown
editor.py
终极解决方案
1. 安装旧版本 moviepy(推荐)
bash
# 在虚拟环境中运行以下命令
pip uninstall moviepy -y
pip install moviepy==1.0.3
安装1.0.3版本的moviepy后,运行成功,视频全部转换成音频
Python源代码如下:
import sys
sys.path.append(r"D:\ProgramData\anaconda3\envs\my_env_39\Lib\site-packages")
import os
from moviepy.editor import AudioFileClip
import logging
from tqdm import tqdm # 用于显示进度条
# 配置日志记录
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s",
filename="mp4_to_mp3_conversion.log",
)
logger = logging.getLogger(__name__)
def convert_mp4_to_mp3(mp4_path, mp3_path):
"""将MP4文件转换为MP3文件"""
try:
audio_clip = AudioFileClip(mp4_path)
audio_clip.write_audiofile(mp3_path)
audio_clip.close()
http://logger.info(f"成功转换: {mp4_path} -> {mp3_path}")
return True
except Exception as e:
logger.error(f"转换失败 {mp4_path}: {str(e)}")
return False
def delete_mp4_file(mp4_path):
"""删除MP4文件"""
try:
os.remove(mp4_path)
http://logger.info(f"成功删除: {mp4_path}")
return True
except Exception as e:
logger.error(f"删除失败 {mp4_path}: {str(e)}")
return False
def process_folder(folder_path):
"""处理单个文件夹中的所有MP4文件"""
if not os.path.exists(folder_path):
logger.error(f"文件夹不存在,跳过: {folder_path}")
return
http://logger.info(f"开始处理文件夹: {folder_path}")
mp4_files = [
os.path.join(root, file)
for root, _, files in os.walk(folder_path)
for file in files
if file.lower().endswith(".mp4")
]
if not mp4_files:
http://logger.info(f"未找到MP4文件,跳过: {folder_path}")
return
for mp4_path in tqdm(mp4_files, desc=f"处理 {os.path.basename(folder_path)}"):
mp3_path = os.path.splitext(mp4_path)[0] + ".mp3"
if convert_mp4_to_mp3(mp4_path, mp3_path):
delete_mp4_file(mp4_path)
def main():
# 目标文件夹列表
target_folders = [
r"E:\little fox 动画\AR4.8 Sherlock Holmes【501.56MB】",
r"E:\little fox 动画\AR5.0 Great Expectations【376.54MB】",
r"E:\little fox 动画\AR5.0 Les Misérables 悲惨世界",
r"E:\little fox 动画\AR5.2 O. Henry",
r"E:\little fox 动画\AR5.7海底两万里 20,000 Leagues Under the Sea ※※※",
r"E:\little fox 动画\AR5.9 Arsène Lupin【283.96MB】 大盗",
r"E:\little fox 动画\AR6.1 Dracula【128.89MB】",
r"E:\little fox 动画\AR6.2 Oscar Wilde【117.69MB】",
r"E:\little fox 动画\AR6.2 Our World Landmarks【549.65MB】",
r"E:\little fox 动画\AR6.5 Greek Myths【158.26MB】",
r"E:\little fox 动画\AR7.3 Famous Disasters【149.56MB】",
]
# 检查moviepy是否安装
try:
from moviepy.editor import AudioFileClip
except ImportError:
logger.error("需要先安装moviepy库,请运行: pip install moviepy")
return
# 处理所有文件夹
for folder in target_folders:
process_folder(folder)
http://logger.info("所有文件夹处理完成!")
if __name__ == "__main__":
main()
本文分享自 Dance with GenAI 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!