• 技术文章 >后端开发 >Python教程

    详解pygame加载中文名mp3文件出现error解决方法

    高洛峰高洛峰2017-03-31 10:04:34原创1531
    #pygame播放mp3文件:

      这里笔者只介绍一种好理解的方法

    详解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 pygameimport 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并不是完全开源的.

    以上就是详解pygame加载中文名mp3文件出现error解决方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:python pygame
    上一篇:详解利用python爬取软考试题之ip自动代理方法 下一篇:使用Python对Access读写操作方法详解

    相关文章推荐

    • 在服务器端实现无间断部署Python应用的教程• 用Python实现一个简单的能够发送带附件的邮件程序的教程• Python程序设计入门(1)基本语法简介• Python设计模式之单例模式实例• Python的*args和 **kwargs的使用方法

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网