pygame加载中文名mp3文件出现error


Posted in Python onMarch 31, 2017

前言: 

今天刚刚做了个音乐列表,但笔者发现在指定目录mp3文件名为中文时,便出现pygame.error,不能正确加载指定mp3文件.写好的代码不想再改了,来个小测试吧

pygame播放mp3文件:

这里笔者只介绍一种好理解的方法,具体请查看pygame.mixer.music官方文档

pygame加载中文名mp3文件出现error

打开官方文档,笔者发现,像是发现了新大陆一样,这家伙太强大了,而现在我只能用它来播放我的mp3.好吧,剩下的等待以后来发掘吧.干什么讲什么,来个播放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.

发现Bug:

接着就是笔者在下午做完音乐列表测试播放的时候遇到的问题,即当待加载mp3文件名包含中文时,出现的pygame.error.

pygame加载中文名mp3文件出现error

这就尴尬了,通过输出的path,发现中文没有乱码,笔者google了下,发现中文的社区有人说python应该尽量避免中文.也有人说可以改一下编码.但笔者试了,貌似不可以.英文社区类似Stack Overflow,均没有关于这个问题的解决方法.毕竟人家老外不太关心''我们自己的事''.于是,爬了半天,没找到有效的解决办法.好吧,这是硬伤.当然,大牛们应该是可以通过更改pygame中源代码解决的,这不是我能做的事^_^.

debug:

笔者来了个好玩的方法,应该还有更好的实现方法,我先来厚着脸皮说一下我的debug思路:

首先,当遇到中文名mp3是出现pygame.error 这时,程序出现严重错误.很自然想到try语句.这样,当遇到中文名mp3时出现error,自动转到except内容.笔者想到复制待播放文件到指定目录,并重命名为非中文.最后加载此非中文mp3文件,从而绕过了pygame中文识别的硬伤.下面上代码:

import pygame
import shutil
path = '一走过的日子-刘德华.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()

运行效果:

pygame加载中文名mp3文件出现error

此时,程序已经可以正常播放中文名mp3文件.其实此问题并没有从本质上解决pygame中文识别问题,而是绕过了这个问题.这个方法也是有个弊端,就是会产生play.mp3这个文件,在做项目的时候可以放在缓存目录里.

至此,关于解决今天下午遇到的pygame中文识别问题叙述完毕,如有更好的方法,望请评论告知,谢谢.

刚才看了下python3.3.3 pygame目录,文件mixer.pyd科普了一下.pyd后缀,发现和dll一样是二进制文件,更改内容需要反编译.也就是说python并不是完全开源的.

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Python 相关文章推荐
跟老齐学Python之用Python计算
Sep 12 Python
深入解析Python中的WSGI接口
May 11 Python
Python3.2中Print函数用法实例详解
May 19 Python
python之PyMongo使用总结
May 26 Python
python中闭包Closure函数作为返回值的方法示例
Dec 17 Python
Python2.X/Python3.X中urllib库区别讲解
Dec 19 Python
PyQT实现多窗口切换
Apr 20 Python
Python mutiprocessing多线程池pool操作示例
Jan 30 Python
python简单实现AES加密和解密
Mar 28 Python
Python Django基础二之URL路由系统
Jul 18 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
Dec 27 Python
django中嵌套的try-except实例
May 21 Python
Python自动发邮件脚本
Mar 31 #Python
Python中查看文件名和文件路径
Mar 31 #Python
使用python遍历指定城市的一周气温
Mar 31 #Python
python网络编程调用recv函数完整接收数据的三种方法
Mar 31 #Python
Python爬取网易云音乐热门评论
Mar 31 #Python
Python中Django发送带图片和附件的邮件
Mar 31 #Python
使用Python对Access读写操作
Mar 30 #Python
You might like
Javascript中的数学函数集合
2007/05/08 Javascript
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2014/09/04 Javascript
js实现简单的可切换选项卡效果
2015/04/10 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
javascirpt实现2个iframe之间传值的方法
2016/06/30 Javascript
从零开始学习Node.js系列教程二:文本提交与显示方法
2017/04/13 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
js中innerText/textContent和innerHTML与target和currentTarget的区别
2019/01/21 Javascript
初试vue-cli使用HBuilderx打包app的坑
2019/07/17 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
举例详解Python中的split()函数的使用方法
2015/04/07 Python
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
Python中XlsxWriter模块简介与用法分析
2018/04/24 Python
Python 爬取携程所有机票的实例代码
2018/06/11 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
python3正则模块re的使用方法详解
2020/02/11 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
2020/07/01 Python
详解Python高阶函数
2020/08/15 Python
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
三只松鼠官方旗舰店:全网坚果销售第1
2017/11/25 全球购物
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
正宗的日本零食和糖果订阅盒:Bokksu
2019/11/21 全球购物
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
教师校本培训方案
2014/02/26 职场文书
《窗前的气球》教学反思
2014/04/07 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书
Golang解析JSON对象
2022/04/30 Golang
SQL Server中锁的用法
2022/05/20 SQL Server