詳解pygame載入中文名mp3檔案出現error解決方案

來源:互聯網
上載者:User
#pygame播放mp3檔案:

  這裡筆者只介紹一種好理解的方法

開啟官方文檔,筆者發現,像是發現了新大陸一樣,這傢伙太強大了,而現在我只能用它來播放我的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並不是完全開源的.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.