UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xff in position 41: invalid start byte
文章目录
- 一、遇到报错
- 二、错误分析与解决
一、遇到报错
笔者在进行代码复现的时候,在数据读取时遇到报错:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 41: invalid start byte
报错原因:查阅资料,这句话的意思是遇到了utf-8
无法解码的字节。
最可能的情况是:出现了错误数据,导致解码出错。需要查看自己的数据中是否存在错误文件
。
二、错误分析与解决
摆出代码:
song_path = os.path.join(AUDIO_FOLDER, str(int(song_id)) + SOUND_EXTENSION)
# print(song_path)
audio_file = tf.io.read_file(song_path)
waveforms, _ = tf.audio.decode_wav(contents=audio_file) # 报错代码
根据报错信息显示:waveforms, _ = tf.audio.decode_wav(contents=audio_file)
这句出错。
因此从该行代码往上
进行错误排查:
定位到
audio_file
定位到
song_path
此时,不妨将
song_path
打印出来:print(song_path)
观察打印结果。如下图所示,当打印到
10.wav
时就停止打印并报错了,因此排查10.wav
文件。
原来,此处的10.wav
文件当初是手动从10.mp3
经过修改后缀
得来的,这种方式使得文件出错,此时没有办法被正确读取。因此,笔者通过librosa+soundfile用4行代码,重新根据10.mp3
生成了10.wav
文件。想知道如何将MP3文件修改为wav文件的,可以查看笔者之前的文章《librosa实现音频格式转换(单曲&批量) | MP3转wav》
在此,我们要在此强调一次,
wav
文件不要通过修改后缀的形式生成!虽然很方便,但是后续程序读取的时候很可能会出错。而且,通过librosa
+soundfile
,以代码的形式进行格式更改很方便速度也很快,生成的文件也不会出错,它不香嘛!修改后,重新运行代码。
可以看到,print
语句顺利地打印出了后面的wav
信息,并且不再报错。说明报错确实是因为10.wav
存在文件错误。
debug小技巧:善用
根据
(本文完)
参考:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xff in position 0: invalid start byte
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xff in position 41: invalid start byte相关推荐
- 解决UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte问题
此文首发于我的个人博客:解决UnicodeDecodeError 'utf-8' codec can't decode byte 0xff in position 0 invalid start by ...
- UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xff in position 0: invalid start byte ,mac
从网上查了很多种方法*均对我的bug不是很奏效,可能因为我的.txt文件是.xls文件转的,且我要读取的文件只有6个,遂采取最brute的方法:把所有文件里的内容copy出来,放到新文件里即可. *方 ...
- pandas 读取csv : ‘utf-8‘ codec can‘t decode byte 0xff in position 0: invalid start byte
问题描述 用python 读取csv文件时,报错utf-8' codec can't decode byte 0xff in position 0: invalid start byte 问题原因 打 ...
- [Solved] UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xff in position 0: invalid start byte
1. with open(path, 'rb') as f:contents = f.read()2. with open(path, encoding="utf8", error ...
- ‘UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xff in position 0: invalid start byte‘成功解决
今天在用pandas进行读取时出现了bug 出现这种情况的原因是:文件的编码不是 UTF8 编码的,而pandas读取文件时固定采用 UTF8 解码.解决方法是改为对应的解码方式. 解决的方式有两种: ...
- 调试错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
代码: #-*-coding:utf-8-*- import tensorflow as tf import numpy as np import matplotlib.pyplot as plt f ...
- UnicodeDecodeError: 'utf8' codec can't decode byte 0xb1 in position 0: invalid start byte
在Python处理字符编码时出现如下错误: UnicodeDecodeError: 'utf8' codec can't decode byte 0xb1 in position 0: invalid ...
- UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb0 in position 0: invalid start byte
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 0: invalid start byte
- UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0x8b in position 1: invalid start byte
当我们使用urllib库打印爬取的网页信息print(res.read().decode('utf-8'))出现: UnicodeDecodeError: 'utf-8' codec can't de ...
最新文章
- mysql存储引擎中INNODB和MyISAM的区别
- php获取日期中的月份,年份
- Ubuntu下绘图软件krita64位无中文问题
- 如何优雅地编写Java
- 基础 | 零散的MySql基础记不住,看这一篇就够啦
- python中的urllib库_Python2/3中的urllib库
- bzoj 2216: [Poi2011]Lightning Conductor(DP决策单调性)
- 3dmax如何导入ies灯
- 国际服务贸易重点整理
- 利用输入法输入汉字,如何统计字数
- 兰博基尼推出全新混动超跑Revuelto
- c--scanf()函数详解
- 第一台计算机是怎么输出,世界上第一台计算机是如何诞生的?
- linux ide sata硬盘,Linux 下SATA与IDE硬盘区别
- 大厦设计师 -- 建造者模式 (Builder Pattern) 介绍 使用案例场景分析 优缺点 及代码演示
- HTML font 标签的 size 属性
- 商业模式的逻辑--清华大学X-lab沈拓学习笔记
- Excel 中国式排名
- Ubuntu开机自启动(适用于ubuntu桌面、服务器、树莓派)
- 数列极限存在准则:夹逼准则