使用playsound播放音频遇编码错误,已解决求问题原因
playsound播放MP3路径报错原因解析
一、双斜杠路径触发UnicodeDecodeError的原因
最初代码:
from playsound import playsound playsound('C://Users//hp//Desktop//francisco//non-school work//musica.mp3')
报错信息:
Traceback (most recent call last): File "c:/Users/hp/Desktop/francisco/trabalhos que não são da escola/projeto1/ex021.py", line 3, in <module> playsound('C:/Users/hp/Desktop/francisco/trabalhos que não são da escola/musica.mp3') File "C:\Users\hp\AppData\Local\Programs\Python\Python38\lib\site-packages\playsound.py", line 35, in _playsoundWin winCommand('open "' + sound + '" alias', alias) File "C:\Users\hp\AppData\Local\Programs\Python\Python38\lib\site-packages\playsound.py", line 30, in winCommand '\n ' + errorBuffer.value.decode()) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe3 in position 1: invalid continuation byte
错误核心原因:
路径中包含非ASCII字符são里的ã(对应字节0xe3),你使用的playsound旧版本在Windows平台下,会强制用UTF-8解码系统调用返回的错误缓冲区内容,但Windows系统默认编码并非UTF-8(通常是CP1252或GBK),编码不匹配导致解码失败。
二、单斜杠路径触发SyntaxError的原因
修改后的代码:
from playsound import playsound playsound('C:\Users\hp\Desktop\francisco\trabalhos que não são da escola\musica.mp3') input()
报错信息:
File "c:/Users/hp/Desktop/francisco/trabalhos que não são da escola/projeto1/ex021.py", line 3 playsound('C:\Users\hp\Desktop\francisco\trabalhos que não são da escola\musica.mp3') ^ SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
错误核心原因:
Python字符串中的单斜杠\是转义字符,\U会被识别为Unicode转义序列的开头,要求后续紧跟8位十六进制数,但路径里\Users的\U后面没有完整的转义内容,导致Python解析字符串时触发语法错误。解决这类问题的常用方法:
- 使用双斜杠
//替代单斜杠 - 在字符串前加
r声明为原始字符串(如r'C:\Users\...') - 使用正斜杠
/作为路径分隔符
三、同目录直接用文件名成功的原因
成功代码:
from playsound import playsound playsound('musica.mp3') input()
原因:
当MP3文件与脚本处于同一目录时,直接使用文件名无需指定完整路径,既避开了路径中的转义字符问题,也避免了非ASCII字符引发的编码不匹配问题,playsound可以直接在当前工作目录中找到目标文件,因此执行成功。
内容的提问来源于stack exchange,提问作者Francisco Frieza
相关产品推荐
相关产品推荐

