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

Windows10下使用pydub的AudioSegment出现PermissionError求助

问题描述

我用Python写了一段播放WAV音频的代码,运行时触发权限错误。每次报错的临时文件名都不一样,文件路径指向系统临时目录,但实际去路径里找根本没有这个文件。

代码

from pydub import AudioSegment
from pydub.playback import play

try:
     song=AudioSegment.from_wav("myfile.wav")

except IOError:
    print("can not open file")

try:
    play(song)
except IOError:
    print("can not play file")

带try块的运行输出

My Project Python/my project python/play wav.py"
can not play file

移除try块后的报错信息

Traceback (most recent call last):
  File "d:\My Project Python\my project python\play wav.py", line 7, in <module>
    play(song)
  File "C:\Users\H&M\AppData\Local\Programs\Python\Python310\lib\site-packages\pydub\playback.py", line 71, in play    _play_with_ffplay(audio_segment)
  File "C:\Users\H&M\AppData\Local\Programs\Python\Python310\lib\site-packages\pydub\playback.py", line 15, in _play_with_ffplay
    seg.export(f.name, "wav")
  File "C:\Users\H&M\AppData\Local\Programs\Python\Python310\lib\site-packages\pydub\audio_segment.py", line 867, in export
    out_f, _ = _fd_or_path_or_tempfile(out_f, 'wb+')
  File "C:\Users\H&M\AppData\Local\Programs\Python\Python310\lib\site-packages\pydub\utils.py", line 60, in _fd_or_path_or_tempfile
    fd = open(fd, mode=mode)
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\H&M\\AppData\\Local\\Temp\\tmp7t2o2ta1.wav'
解决办法

这个错误本质是Python进程没有权限在系统临时目录创建或写入临时文件,每次文件名不同是因为pydub会随机生成临时文件名,而文件不存在是因为创建失败导致的。试试以下几种方案:

  • 检查临时目录权限
    右键打开C:\Users\H&M\AppData\Local\Temp,选择「属性」→「安全」,确认当前登录用户拥有「写入」「修改」权限。如果没有,点击「编辑」按钮添加对应权限。

  • 排除安全软件拦截
    不少杀毒软件或系统安全工具会限制程序在临时目录的写入操作,可暂时关闭安全软件测试,或者把Python程序以及临时目录添加到安全软件的信任列表。

  • 手动指定临时文件路径
    绕过系统临时目录,自己指定一个有权限的路径(比如脚本所在目录)来生成临时文件,修改代码如下:

    from pydub import AudioSegment
    import os
    import tempfile
    
    try:
        song = AudioSegment.from_wav("myfile.wav")
    except IOError:
        print("无法打开文件")
    
    try:
        # 在当前脚本目录创建临时文件,播放完成后手动删除
        with tempfile.NamedTemporaryFile(mode='wb+', suffix='.wav', delete=False, dir=os.getcwd()) as temp_file:
            song.export(temp_file.name, format="wav")
            # 调用ffplay播放,需确保ffmpeg已安装且在环境变量中
            os.system(f'ffplay -autoexit "{temp_file.name}"')
        os.unlink(temp_file.name)
    except Exception as e:
        print(f"播放失败: {str(e)}")
    

    注意:此方法需要提前安装ffmpeg,并将其添加到系统环境变量中。

  • 规避用户名特殊字符
    你的用户名包含&符号,可能导致路径解析异常。可以把Python项目移动到不含特殊字符的路径(比如D:\PythonProjects\AudioPlayer),或者用不含特殊字符的用户账户测试。

内容的提问来源于stack exchange,提问作者Muhammad Alijani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:35:16