python播放音频文件及playsound模块解除占用的3种方法

pip install playsound

播放mp3文件

from playsound import playsound
import os

def play_mp3(audio_path):
    """
    播放 mp3
    :param audio_path: mp3 路径
    :return:
    """
    playsound(audio_path)
    # 删除文件(因为playsound一直占用mp3,不删除,循环就报错。)
    os.remove(audio_path)

if __name__ == '__main__':
    audio_path = 'audio.mp3'
    play_mp3(audio_path)

使用playsound模块遇到的问题

这个模块的问题,就是无法解除占用。如果播放完后想重新播放或者进行修改就会提示拒绝访问。

例如:

python的playsound用法 python playsound_删除文件


当循环执行的时候

结果提示错误,因为auido.mp3文件被playsound模块占用了

python的playsound用法 python playsound_python_02

python下playsound模块解除占用的3种方法

1 修改源代码:

from playsound import playsound
import os
playsound('audio.mp3')
os.remove('audio.mp3')#删除文件,防止被占用

2 修改playsound模块

在python安装目录下的

~\Python36\Lib\site-packages

找到playsound.py

python的playsound用法 python playsound_python_03


用IDE打开

python的playsound用法 python playsound_删除文件_04


找到这里

python的playsound用法 python playsound_拒绝访问_05


增加代码 winCommand(‘close’, alias)

python的playsound用法 python playsound_拒绝访问_06


就ok了!

3 另一种修改playsound模块

python的playsound用法 python playsound_拒绝访问_07


python的playsound用法 python playsound_拒绝访问_08


我用windows+python,所以在playsound里的winCommand里添加上边绿框的代码

while True:
    if winCommand('status', alias, 'mode').decode() == 'stopped':
        winCommand('close', alias)
        break
一定在“winCommand('play', alias, 'from 0 to', durationInMS.decode())”位置后添加代码。实测没问题。