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实现list反转实例汇总
Nov 11 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
Mar 12 Python
记一次python 内存泄漏问题及解决过程
Nov 29 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
Dec 19 Python
Python 运行 shell 获取输出结果的实例
Jan 07 Python
Django Sitemap 站点地图的实现方法
Apr 29 Python
Python上下文管理器全实例详解
Nov 12 Python
检测tensorflow是否使用gpu进行计算的方式
Feb 03 Python
python模拟点击网页按钮实现方法
Feb 25 Python
Django choices下拉列表绑定实例
Mar 13 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
Aug 07 Python
OpenCV项目实践之停车场车位实时检测
Apr 11 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
回首过去10年中最搞笑的10部动漫,哪一部让你节操尽碎?
2020/03/03 日漫
php通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
php实现的ping端口函数实例
2014/11/12 PHP
浅谈php的优缺点
2015/07/14 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
2017/03/16 PHP
JS实现打开本地文件或文件夹
2021/03/09 Javascript
jquery插件之easing 动态菜单
2010/08/21 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
用JS生成UUID的方法实例
2016/03/30 Javascript
jQuery 获取页面li数组并删除不在数组中的key
2016/08/02 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
Vue中component标签解决项目组件化操作
2020/09/04 Javascript
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
python关于倒排列的知识点总结
2020/10/13 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
python中count函数知识点浅析
2020/12/17 Python
HTML5无刷新改变当前url的代码
2017/03/15 HTML / CSS
常用的HTML5列表标签
2017/06/20 HTML / CSS
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
Laravel中Kafka的使用详解
2021/03/24 PHP
工程学毕业生自荐信
2014/06/14 职场文书
小学社团活动总结
2014/06/27 职场文书
2014年信贷员工作总结
2014/11/18 职场文书
2019暑假学生安全口号
2019/06/27 职场文书
详细介绍python类及类的用法
2021/05/31 Python