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 functools模块学习总结
May 09 Python
Python的Django中django-userena组件的简单使用教程
May 30 Python
简单实现python爬虫功能
Dec 31 Python
django1.11.1 models 数据库同步方法
May 30 Python
python格式化输出保留2位小数的实现方法
Jul 02 Python
Python imread、newaxis用法详解
Nov 04 Python
使用遗传算法求二元函数的最小值
Feb 11 Python
Python参数传递对象的引用原理解析
May 22 Python
在keras中实现查看其训练loss值
Jun 16 Python
Tensorflow全局设置可见GPU编号操作
Jun 30 Python
python logging 重复写日志问题解决办法详解
Aug 04 Python
Python Matplotlib库实现画局部图
Nov 17 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
第十一节 重载 [11]
2006/10/09 PHP
php读取xml实例代码
2010/01/28 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
PHP中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
PHP获取当前页面URL函数实例
2014/10/22 PHP
PHP使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
SinaEditor使用方法详解
2013/12/28 Javascript
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
2016/01/14 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
jquery插入兄弟节点的操作方法
2016/12/07 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
Javascript(es2016) import和require用法和区别详解
2017/08/11 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
webpack4.x开发环境配置详解
2018/08/04 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
Python标准库defaultdict模块使用示例
2015/04/28 Python
详解python实现线程安全的单例模式
2018/03/05 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
2018/03/13 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
2019/01/02 Python
python文件写入write()的操作
2019/05/14 Python
python变量命名的7条建议
2019/07/04 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
电子商务专业个人的自我评价
2013/11/19 职场文书
《高尔基和他的儿子》教学反思
2014/04/09 职场文书
一年级学生评语大全
2014/04/21 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
行政专员岗位职责说明书
2014/09/01 职场文书
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB
Python写情书? 10行代码展示如何把情书写在她的照片里
2022/04/21 Python