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绘图方法实例入门
May 19 Python
Python 查看list中是否含有某元素的方法
Jun 27 Python
Python中实现单例模式的n种方式和原理
Nov 14 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
Dec 25 Python
selenium+python配置chrome浏览器的选项的实现
Mar 18 Python
Python数组拼接np.concatenate实现过程
Apr 18 Python
python实现飞船游戏的纵向移动
Apr 24 Python
keras 多gpu并行运行案例
Jun 10 Python
如何在pycharm中安装第三方包
Oct 27 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
Dec 01 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
Jan 23 Python
Python爬虫中urllib3与urllib的区别是什么
Jul 21 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
我的论坛源代码(十)
2006/10/09 PHP
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
主流PHP框架的优缺点对比分析
2014/12/25 PHP
PHP中使用imagick生成PSD文件缩略图教程
2015/01/26 PHP
PHP导入导出Excel代码
2015/07/07 PHP
判断是否输入完毕再激活提交按钮
2006/06/26 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
异步动态加载JS并运行(示例代码)
2013/12/13 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
JavaScript中window.open用法实例详解
2015/04/15 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
JavaScript中instanceof运算符的使用示例
2016/06/08 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
深入理解jquery中的each用法
2016/12/14 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
详解NODEJS的http实现
2018/01/04 NodeJs
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
Vue性能优化的方法
2020/07/30 Javascript
使用vue构建多页面应用的示例
2020/10/22 Javascript
python使用urlparse分析网址中域名的方法
2015/04/15 Python
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
Python爬虫文件下载图文教程
2018/12/23 Python
Python循环结构的应用场景详解
2019/07/11 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
python实现简单学生信息管理系统
2020/04/09 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
不服劳动仲裁起诉书
2015/05/20 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技