国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

pygame加載中文名mp3文件出現error

2019-11-25 16:16:26
字體:
來源:轉載
供稿:網友

前言: 

今天剛剛做了個音樂列表,但筆者發現在指定目錄mp3文件名為中文時,便出現pygame.error,不能正確加載指定mp3文件.寫好的代碼不想再改了,來個小測試吧

pygame播放mp3文件:

這里筆者只介紹一種好理解的方法,具體請查看pygame.mixer.music官方文檔

打開官方文檔,筆者發現,像是發現了新大陸一樣,這家伙太強大了,而現在我只能用它來播放我的mp3.好吧,剩下的等待以后來發掘吧.干什么講什么,來個播放mp3 test代碼:

import pygamepath = 'Pam Pam - Noel Toto.mp3'pygame.mixer.init()pygame.mixer.music.load(path)pygame.mixer.music.play()

其中,path表示待播放mp3文件的路徑及文件名.這里筆者用的是源生的idle,可以正常播放此mp3.

發現Bug:

接著就是筆者在下午做完音樂列表測試播放的時候遇到的問題,即當待加載mp3文件名包含中文時,出現的pygame.error.

這就尷尬了,通過輸出的path,發現中文沒有亂碼,筆者google了下,發現中文的社區有人說python應該盡量避免中文.也有人說可以改一下編碼.但筆者試了,貌似不可以.英文社區類似Stack Overflow,均沒有關于這個問題的解決方法.畢竟人家老外不太關心''我們自己的事''.于是,爬了半天,沒找到有效的解決辦法.好吧,這是硬傷.當然,大牛們應該是可以通過更改pygame中源代碼解決的,這不是我能做的事^_^.

debug:

筆者來了個好玩的方法,應該還有更好的實現方法,我先來厚著臉皮說一下我的debug思路:

首先,當遇到中文名mp3是出現pygame.error 這時,程序出現嚴重錯誤.很自然想到try語句.這樣,當遇到中文名mp3時出現error,自動轉到except內容.筆者想到復制待播放文件到指定目錄,并重命名為非中文.最后加載此非中文mp3文件,從而繞過了pygame中文識別的硬傷.下面上代碼:

import pygameimport shutilpath = '一走過的日子-劉德華.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()

運行效果:

此時,程序已經可以正常播放中文名mp3文件.其實此問題并沒有從本質上解決pygame中文識別問題,而是繞過了這個問題.這個方法也是有個弊端,就是會產生play.mp3這個文件,在做項目的時候可以放在緩存目錄里.

至此,關于解決今天下午遇到的pygame中文識別問題敘述完畢,如有更好的方法,望請評論告知,謝謝.

剛才看了下python3.3.3 pygame目錄,文件mixer.pyd科普了一下.pyd后綴,發現和dll一樣是二進制文件,更改內容需要反編譯.也就是說python并不是完全開源的.

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永春县| 贞丰县| 融水| 锡林浩特市| 南川市| 祁连县| 凤山县| 贺州市| 永清县| 信宜市| 肇庆市| 乌拉特中旗| 华蓥市| 玛多县| 望谟县| 四子王旗| 梨树县| 论坛| 额敏县| 淮南市| 宝应县| 长阳| 马鞍山市| 萨迦县| 成安县| 金寨县| 永新县| 泗水县| 如皋市| 勃利县| 兰溪市| 嘉黎县| 夏河县| 山阳县| 恩施市| 印江| 太仆寺旗| 利辛县| 曲沃县| 梨树县| 林周县|