pygame加載中文名mp3文件出現(xiàn)error
前言:
今天剛剛做了個(gè)音樂列表,但筆者發(fā)現(xiàn)在指定目錄mp3文件名為中文時(shí),便出現(xiàn)pygame.error,不能正確加載指定mp3文件.寫好的代碼不想再改了,來(lái)個(gè)小測(cè)試吧
pygame播放mp3文件:
這里筆者只介紹一種好理解的方法,具體請(qǐng)查看pygame.mixer.music官方文檔

打開官方文檔,筆者發(fā)現(xiàn)這家伙太強(qiáng)大了,而現(xiàn)在我只能用它來(lái)播放我的mp3.好吧,剩下的等待以后來(lái)發(fā)掘吧.干什么講什么,來(lái)個(gè)播放mp3 test代碼:
import pygame path = 'Pam Pam - Noel Toto.mp3' pygame.mixer.init() pygame.mixer.music.load(path) pygame.mixer.music.play()
其中,path表示待播放mp3文件的路徑及文件名.這里筆者用的是源生的idle,可以正常播放此mp3.
發(fā)現(xiàn)Bug:
接著就是筆者在下午做完音樂列表測(cè)試播放的時(shí)候遇到的問題,即當(dāng)待加載mp3文件名包含中文時(shí),出現(xiàn)的pygame.error.

這就尷尬了,通過(guò)輸出的path,發(fā)現(xiàn)中文沒有亂碼,筆者google了下,發(fā)現(xiàn)中文的社區(qū)有人說(shuō)python應(yīng)該盡量避免中文.也有人說(shuō)可以改一下編碼.但筆者試了,貌似不可以.英文社區(qū)類似Stack Overflow,均沒有關(guān)于這個(gè)問題的解決方法.畢竟人家老外不太關(guān)心''我們自己的事''.于是,爬了半天,沒找到有效的解決辦法.好吧,這是硬傷.當(dāng)然,大牛們應(yīng)該是可以通過(guò)更改pygame中源代碼解決的,這不是我能做的事^_^.
debug:
筆者來(lái)了個(gè)好玩的方法,應(yīng)該還有更好的實(shí)現(xiàn)方法,我先來(lái)厚著臉皮說(shuō)一下我的debug思路:
首先,當(dāng)遇到中文名mp3是出現(xiàn)pygame.error 這時(shí),程序出現(xiàn)嚴(yán)重錯(cuò)誤.很自然想到try語(yǔ)句.這樣,當(dāng)遇到中文名mp3時(shí)出現(xiàn)error,自動(dòng)轉(zhuǎn)到except內(nèi)容.筆者想到復(fù)制待播放文件到指定目錄,并重命名為非中文.最后加載此非中文mp3文件,從而繞過(guò)了pygame中文識(shí)別的硬傷.下面上代碼:
import pygame
import shutil
path = '一走過(guò)的日子-劉德華.mp3'
pygame.mixer.init()
try:
pygame.mixer.music.load(path)
pygame.mixer.music.play()
except:
print('something is wrong~\nbut i see you.')
shutil.copyfile(path,'play.mp3')
pygame.mixer.music.load('play.mp3')
pygame.mixer.music.play()運(yùn)行效果:

此時(shí),程序已經(jīng)可以正常播放中文名mp3文件.其實(shí)此問題并沒有從本質(zhì)上解決pygame中文識(shí)別問題,而是繞過(guò)了這個(gè)問題.這個(gè)方法也是有個(gè)弊端,就是會(huì)產(chǎn)生play.mp3這個(gè)文件,在做項(xiàng)目的時(shí)候可以放在緩存目錄里.
至此,關(guān)于解決今天下午遇到的pygame中文識(shí)別問題敘述完畢,如有更好的方法,望請(qǐng)?jiān)u論告知,謝謝.
剛才看了下python3.3.3 pygame目錄,文件mixer.pyd科普了一下.pyd后綴,發(fā)現(xiàn)和dll一樣是二進(jìn)制文件,更改內(nèi)容需要反編譯.也就是說(shuō)python并不是完全開源的.
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
Django中ModelForm組件的簡(jiǎn)單配置與使用教程
modelform是django中基于已有的model,快速生成的具有form功能的一個(gè)模塊,下面這篇文章主要給大家介紹了關(guān)于Django中ModelForm組件的簡(jiǎn)單配置與使用教程,需要的朋友可以參考下2022-10-10
詳解Python實(shí)現(xiàn)URL監(jiān)測(cè)與即時(shí)推送
這篇文章主要為大家介紹了Python實(shí)現(xiàn)URL監(jiān)測(cè)與即時(shí)推送,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2021-11-11
在Pycharm中設(shè)置默認(rèn)自動(dòng)換行的方法
今天小編就為大家分享一篇在Pycharm中設(shè)置默認(rèn)自動(dòng)換行的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
在python image 中實(shí)現(xiàn)安裝中文字體
這篇文章主要介紹了在python image 中實(shí)現(xiàn)安裝中文字體,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
Python3網(wǎng)絡(luò)爬蟲之使用User Agent和代理IP隱藏身份
這篇文章主要介紹了Python3網(wǎng)絡(luò)爬蟲之使用User Agent和代理IP隱藏身份,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
Tensorflow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的詳細(xì)代碼
這篇文章主要為大家詳細(xì)介紹了Tensorflow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的詳細(xì)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
使用Python腳本對(duì)Linux服務(wù)器進(jìn)行監(jiān)控的教程
這篇文章主要介紹了使用Python程序?qū)inux服務(wù)器進(jìn)行監(jiān)控的教程,主要基于Python2.7的版本,需要的朋友可以參考下2015-04-04
Tensorflow分類器項(xiàng)目自定義數(shù)據(jù)讀入的實(shí)現(xiàn)
這篇文章主要介紹了Tensorflow分類器項(xiàng)目自定義數(shù)據(jù)讀入的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
淺談Python中的zip()與*zip()函數(shù)詳解
這篇文章主要介紹了淺談Python中的zip()與*zip()函數(shù)詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02

