Python CSV转MP3代码出现Index Error问题求助
YouTube转MP3代码IndexError问题排查与修复
你遇到的是IndexError: list index out of range(列表索引越界),本质是代码尝试访问一个空列表的索引,下面是常见原因和解决办法:
库版本过时
如果你用的是pytube,旧版本无法适配YouTube的最新反爬策略,导致获取不到音频流列表。执行更新命令:pip install --upgrade pytube要是用的是停止维护的
youtube-dl,直接替换为活跃维护的yt-dlp:pip install yt-dlp代码逻辑缺陷
很多人写代码时会直接用streams[0]取第一个音频流,但如果过滤后的流列表为空,就会触发索引错误。改成安全的写法:# 以pytube为例 from pytube import YouTube yt = YouTube("你的视频URL") audio_streams = yt.streams.filter(only_audio=True) # 先判断流是否存在 if not audio_streams: print("无法获取有效音频流") exit() # 取第一个可用流 audio_stream = audio_streams.first() audio_stream.download(output_path="./downloads")视频访问限制
部分视频有地域锁、年龄限制或私有设置,导致库无法拉取流数据。可以尝试:- 更换网络环境(比如用对应地域的代理)
- 确认视频是否为公开可访问状态
转MP3补充步骤
下载的音频通常是.mp4格式,要转成MP3可以用pydub(依赖ffmpeg):# 先安装依赖 pip install pydub # 系统需安装ffmpeg,Windows可下载后添加到环境变量,Linux/macOS用包管理器安装转换代码:
from pydub import AudioSegment input_file = "./downloads/下载的音频.mp4" output_file = "./downloads/转换后的音频.mp3" AudioSegment.from_file(input_file).export(output_file, format="mp3")
内容的提问来源于stack exchange,提问作者Ishan -
相关产品推荐
相关产品推荐

