打算做一个背单词的电脑软件,从网上找了有关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)
输出的内容仍是\
,但此时的程序已经能够正常运行。
总结
综上,发现windows下使用playsound
库时,由于路径分隔符而导致的UnicodeDecodeError
错误可以通过以下两种方案解决:
一、改用//
或/
。
二、from os import path后使用path.sep来制造万能分隔符。
又来了😁
By 然 at July 5th, 2020 at 02:32 pm.
无人区签到
By 然 at May 4th, 2020 at 12:16 pm.
@然
嘿嘿|´・ω・)ノ
By Soulxyz at May 4th, 2020 at 09:31 pm.