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常见文件操作的函数示例代码
Nov 15 Python
python正则表达式match和search用法实例
Mar 26 Python
用Python编写一个基于终端的实现翻译的脚本
Apr 24 Python
python类和函数中使用静态变量的方法
May 09 Python
在Django中创建第一个静态视图
Jul 15 Python
python使用socket创建tcp服务器和客户端
Apr 12 Python
django DRF图片路径问题的解决方法
Sep 10 Python
CentOS 7 安装python3.7.1的方法及注意事项
Nov 01 Python
Python XlsxWriter模块Chart类用法实例分析
Mar 11 Python
pytorch 批次遍历数据集打印数据的例子
Dec 30 Python
Python 如何在字符串中插入变量
Aug 01 Python
Pandas实现批量拆分与合并Excel的示例代码
May 30 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 PDO中文乱码解决办法
2009/07/20 PHP
php调用mysql数据 dbclass类
2011/05/07 PHP
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
2014/06/09 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
PHP中命名空间的使用例子
2019/03/22 PHP
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
2016/04/15 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
微信小程序开发的基本流程步骤
2019/01/31 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
python机器学习理论与实战(一)K近邻法
2021/01/28 Python
使用Python写一个小游戏
2018/04/02 Python
如何获取Python简单for循环索引
2019/11/21 Python
pytorch 批次遍历数据集打印数据的例子
2019/12/30 Python
tensorflow 保存模型和取出中间权重例子
2020/01/24 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
django model通过字典更新数据实例
2020/04/01 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
keras 指定程序在某块卡上训练实例
2020/06/22 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
学python爬虫能做什么
2020/07/29 Python
Omio波兰:全欧洲低价大巴、火车和航班搜索和比价
2018/02/16 全球购物
英国鹦鹉店:Parrot Essentials
2018/12/03 全球购物
生日寿宴答谢词
2014/01/19 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
化工专业求职信
2014/07/01 职场文书
2015年财政所工作总结
2015/04/25 职场文书
环保建议书作文400字
2015/09/14 职场文书
机械生产实习心得体会
2016/01/22 职场文书
创业计划书之网络外卖
2019/10/31 职场文书
Spring Boot 启动、停止、重启、状态脚本
2021/06/26 Java/Android