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比较文件夹比另一同名文件夹多出的文件并复制出来的方法
Mar 05 Python
Python打印“菱形”星号代码方法
Feb 05 Python
python版大富翁源代码分享
Nov 19 Python
python实现的MySQL增删改查操作实例小结
Dec 19 Python
Python构建图像分类识别器的方法
Jan 12 Python
python3爬虫学习之数据存储txt的案例详解
Apr 24 Python
python3.6编写的单元测试示例
Aug 17 Python
python 命令行传入参数实现解析
Aug 30 Python
python 实现turtle画图并导出图片格式的文件
Dec 07 Python
python+selenium+Chrome options参数的使用
Mar 18 Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 Python
Python线程池与GIL全局锁实现抽奖小案例
Apr 13 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
php 智能404跳转代码,适合换域名没改变目录的网站
2010/06/04 PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
2011/05/19 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
Jquery 滑入滑出效果实现代码
2010/03/27 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
JQuery教学之性能优化
2014/05/14 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
微信小程序 出现47001 data format error原因解决办法
2017/03/10 Javascript
JavaScript函数节流的两种写法
2017/04/07 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
如何实现vue的tree组件
2020/12/03 Vue.js
python使用cookielib库示例分享
2014/03/03 Python
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
python3如何将docx转换成pdf文件
2018/03/23 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
Apache,wsgi,django 程序部署配置方法详解
2019/07/01 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
出纳工作岗位责任制
2014/02/02 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
2014年妇幼保健工作总结
2014/12/08 职场文书
留学推荐信英文范文
2015/03/26 职场文书
病房管理制度范本
2015/08/06 职场文书
CSS3鼠标悬浮过渡缩放效果
2021/04/17 HTML / CSS
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server