打算做一个背单词的电脑软件,从网上找了有关Python播放音频的资料,打算用playsound库试试水。playsound库兼容全平台,也不依赖其他库,安装也十分方便:pip install playsound
然而……安装完后尝试运行一下示例代码却出现了错误……

Playsound库出现UnicodeDecodeError编码错误问题

安装完PlaySound库,尝试运行以下代码来播放Speech_EN目录下的bacon_UK.mp3文件:
···
from playsound import playsound
playsound('Speech_ENbacon_UK.mp3')
···
输出了错误:
···
Traceback (most recent call last):
File "D:githubwords播放音频.py", line 5, in <module>

playsound('Speech_EN\bacon_UK.mp3')

File "C:Program FilesPython38libsite-packagesplaysound.py", line 35, in _playsoundWin

winCommand('open "' + sound + '" alias', alias)

File "C:Program FilesPython38libsite-packagesplaysound.py", line 30, in winCommand

'\n    ' + errorBuffer.value.decode())

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 0: invalid start byte
···
直接从百度上查找有关这个错误的信息,竟然没几个对的上号的结果。
直到我从“关于Python使用playsound模块播放音频文件的编码问题 - CSDN”下评论的一条链接“python playsound 报UnicodeDecodeError”找到了答案:

playsound(path)中的路径在window系统下应要使用window的双\才行,而传递过去的是单报错

OS.path.sep

这让我想起前些天从网上看到的一个P站图片站爬虫实例里用到的一个[os.path.sep][3]方法:

在 Windows 上,文件的路径分割符号是 '' ,在 Linux 上 是 ‘/’。
为了让你的代码在不同的平台上都能运行,那么你写路径的时候是写 ‘/’ 还是写 '' 呢? 使用 os.sep
的话,你就不用去考虑这个了,os.sep 根据你所处的平台,自动地采用相应的分割符号。 举例: Linux下一个路径,
/usr/share/python,那么上面的 os.sep 就是 ‘/’ Windows下一个路径,
C:UsersPublicDesktop, 那么上面的 os.sep 就是 ''。

根据描述,os.sep能根据运行环境生成对应的文件分割符号。
经过测试,虽然直接print(os.path.sep)输出的内容仍是\,但此时的程序已经能够正常运行。
python_os_path.jpg

总结

综上,发现windows下使用playsound库时,由于路径分隔符而导致的UnicodeDecodeError错误可以通过以下两种方案解决:
一、改用///
二、from os import path后使用path.sep来制造万能分隔符。