鱼C论坛

 找回密码
 立即注册
查看: 1443|回复: 11

[已解决]python入门28的作业 打开MP3

[复制链接]
发表于 2019-12-24 17:43:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求大神帮帮忙!!!!!谢谢
python入门28的作业 打开MP3我直接下载,复制了代码也不能直接打开文件
报错如下
Traceback (most recent call last):
  File "C:/Users/18190/Desktop/python/28/读文件.py", line 2, in <module>
    for each_line in f:
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'CP_UTF8' codec can't decode byte 0xb3 in position 0: No mapping for the Unicode character exists in the target code page.
>>>
最佳答案
2019-12-25 14:43:46
庸臃 发表于 2019-12-25 14:14
f = open('OpenMe.mp3', encoding='UTF-8')
这样么?又报错了呢
Traceback (most recent cal ...

         再试试这个:
f = open('OpenMe.mp3', encoding='cp936')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-24 18:36:07 | 显示全部楼层
本帖最后由 jackz007 于 2019-12-24 18:38 编辑

      这个 mp3 文件实际上是一个含有中文字符的文本文件,打开文件的语句加上 encoding 选项试试,就像下面这样:
      f = open(<mp3 file> , encoding='UTF-8')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-24 20:23:19 | 显示全部楼层
文件中有中文,需要调整编码。

解决方法:

把打开文件的语句改成这样:
f = open('<filename>', encoding='utf-8')    # 加上 encoding 参数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-25 08:38:14 | 显示全部楼层
需要添加文件存放的路径名称,比如OpenMe.mp3存放在E盘中,那么对应程序应该是
f = open('E:\\OpenMe.mp3')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-25 08:50:00 | 显示全部楼层
jackz007 发表于 2019-12-24 18:36
这个 mp3 文件实际上是一个含有中文字符的文本文件,打开文件的语句加上 encoding 选项试试,就像下 ...

这就是一个大坑,哪有用mp3做扩展名的文本文件呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-25 14:06:14 | 显示全部楼层
杨林涛 发表于 2019-12-25 08:38
需要添加文件存放的路径名称,比如OpenMe.mp3存放在E盘中,那么对应程序应该是
f = open('E:\\OpenMe.mp3' ...

试过了 也不行哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-25 14:14:18 | 显示全部楼层
jackz007 发表于 2019-12-24 18:36
这个 mp3 文件实际上是一个含有中文字符的文本文件,打开文件的语句加上 encoding 选项试试,就像下 ...

f = open('OpenMe.mp3', encoding='UTF-8')
这样么?又报错了呢
Traceback (most recent call last):
  File "C:/Users/18190/Desktop/python/28/读文件.py", line 2, in <module>
    for each_line in f:
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 0: invalid start byte
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-25 14:43:46 | 显示全部楼层    本楼为最佳答案   
庸臃 发表于 2019-12-25 14:14
f = open('OpenMe.mp3', encoding='UTF-8')
这样么?又报错了呢
Traceback (most recent cal ...

         再试试这个:
f = open('OpenMe.mp3', encoding='cp936')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-25 16:38:17 | 显示全部楼层
jackz007 发表于 2019-12-25 14:43
再试试这个:
f = open('OpenMe.mp3', encoding='cp936')

谢谢你 可以了 请问是什么原理呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-25 21:19:40 From FishC Mobile | 显示全部楼层
        python 在读取文本文件的时候,需要对读到的每一个字节进行解码,如果打开文件的时候没有指定文件中的字符编码,python 就会按缺省参数进行解码,在 Windows 操作系统平台,缺省编码参数是 'GBK',在 Linux 操作系统下,缺省编码参数是 'UTF-8',显然,如果这个参数与文件实际采用的字符编码不一致,读取文件的时候,就会发生编码错误,这个时候,唯一有效的解决方案,就是在打开文件的时候,提供正确的 encoding 参数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-25 22:10:27 | 显示全部楼层
jackz007 发表于 2019-12-25 21:19
python 在读取文本文件的时候,需要对读到的每一个字节进行解码,如果打开文件的时候没有指定文件 ...

谢谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 17:27:06 | 显示全部楼层
赞,解决了我的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-21 04:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表