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编程中一些重用与缩减的建议
Apr 14 Python
django接入新浪微博OAuth的方法
Jun 29 Python
浅析python中的分片与截断序列
Aug 09 Python
python实现用户管理系统
Jan 10 Python
python实现员工管理系统
Jan 11 Python
python3库numpy数组属性的查看方法
Apr 17 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
Dec 12 Python
Python3.5基础之NumPy模块的使用图文与实例详解
Apr 24 Python
使用Python实现图像标记点的坐标输出功能
Aug 14 Python
OpenCV python sklearn随机超参数搜索的实现
Jan 17 Python
Python实现将元组中的元素作为参数传入函数的操作
Jun 05 Python
python爬虫scrapy基本使用超详细教程
Feb 20 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(三)
2012/03/22 PHP
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
PHP设计模式之观察者模式实例
2016/02/22 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
PHP设计模式之注册树模式分析
2018/01/26 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
jquery HotKeys轻松搞定键盘事件代码
2008/08/30 Javascript
JS的反射问题
2010/04/07 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
js中null与空字符串""的区别讲解
2019/01/17 Javascript
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
2019/07/22 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
python中list常用操作实例详解
2015/06/03 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
使用python画个小猪佩奇的示例代码
2018/06/06 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
pytorch 模型可视化的例子
2019/08/17 Python
pytorch之添加BN的实现
2020/01/06 Python
Python requests设置代理的方法步骤
2020/02/23 Python
Python是什么 Python的用处
2020/05/26 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
python tkinter的消息框模块(messagebox,simpledialog)
2020/11/07 Python
俄语地区最大的中国商品在线购物网站之一:Umka Mall
2019/11/03 全球购物
活动总结报告范文
2014/05/04 职场文书
预备党员介绍人意见
2015/06/01 职场文书
农村婚庆主持词
2015/06/29 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js