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

如何删除正在播放的.wav文件?Python操作时报PermissionError怎么解决?

问题原因

报错是因为pygame.mixer.music.play()是异步执行方法,调用后会立刻返回执行后续代码,不会等待音频播放完成。此时my.wav文件还被pygame进程占用,直接执行os.remove就会触发进程占用的权限错误。

解决方案

需要先等待音频播放完成,再释放pygame mixer对文件的占用,最后执行删除操作即可。

修正后的完整代码如下:

from pygame import mixer
import os
import pyttsx3
import time  # 新增导入time模块用于等待


engine=pyttsx3.init()
engine.setProperty('rate',165)
engine.save_to_file('my name is unkown','my.wav')
engine.runAndWait()

mixer.init()
mixer.music.load('my.wav')
mixer.music.play()

# 等待音频播放完成
while mixer.music.get_busy():
    time.sleep(0.1)  # 每次检测间隔0.1秒,避免空循环占用过高CPU

# 关闭mixer,彻底释放文件占用
mixer.quit()

os.remove('my.wav')
注意事项
  • 如果后续还要继续使用mixer,可以不用调用mixer.quit(),仅等待播放完成也能解决大部分占用问题,添加quit是为了兼容Windows系统下的文件句柄占用逻辑,稳定性更高。
  • 调整time.sleep的间隔大小不会影响播放体验,仅控制状态检测频率。

内容的提问来源于stack exchange,提问作者Kushagra Pandey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:24:03