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中fileno()方法的使用
May 24 Python
python生成IP段的方法
Jul 07 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
Nov 02 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
Jun 11 Python
简单谈谈python基本数据类型
Sep 26 Python
django中使用Celery 布式任务队列过程详解
Jul 29 Python
PyQt5 界面显示无响应的实现
Mar 26 Python
Python3标准库之threading进程中管理并发操作方法
Mar 30 Python
linux mint中搜狗输入法导致pycharm卡死的问题
Oct 28 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
Nov 11 Python
python字典与json转换的方法总结
Dec 28 Python
Python PIL按比例裁剪图片
May 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
一个php作的文本留言本的例子(二)
2006/10/09 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
javascript编程起步(第二课)
2007/02/27 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
window.location.href的用法(动态输出跳转)
2014/08/09 Javascript
2014 HTML5/CSS3热门动画特效TOP10
2014/12/07 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
微信小程序自定义模态对话框实例详解
2017/08/16 Javascript
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
Python迭代器和生成器介绍
2015/03/06 Python
详解Python的Django框架中的Cookie相关处理
2015/07/22 Python
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
详解python的四种内置数据结构
2019/03/19 Python
Python控制台实现交互式环境执行
2020/06/09 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
阿迪达斯荷兰官方网站:adidas荷兰
2018/03/16 全球购物
土耳其风格手工珠宝:Ottoman Hands
2019/07/26 全球购物
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
机电工程专业应届生求职信
2013/10/03 职场文书
大三学生入党思想汇报
2014/01/02 职场文书
机电一体化应届生求职信范文
2014/01/24 职场文书
浙大毕业生自荐信
2014/01/26 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
纪念一二九运动演讲稿
2014/09/16 职场文书
群众路线个人整改措施
2014/10/24 职场文书
博士生专家推荐信
2015/03/25 职场文书
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
2022/05/25 Servers