python读txt文件时出现UnicodeDecodeError错误的解决

server/2024/11/28 15:06:27/

1 现象

在编写文件读的代码:

python">src_file_path = "a:\\src.txt"
with open(src_file_path) as file:data = file.readline()

出现如下错误:

> UnicodeDecodeError: 'gbk' codec can't decode byte 0xab in position 2: illegal multibyte sequence

2 分析

从含义来判断,基本是跟字符的编码相关。
该文本文件本身的编码是UTF-8格式。

3 解决方法

3.1 使用二进制的方式

在读取文件时,加入参数‘b’,即使用二进制的方式读取,代码如下:

python">src_file_path = "a:\\src.txt"
with open(src_file_path, 'rb') as file:data = file.readline()

存在的问题是,文本也以二进制的方式读取,不利于后续相关的文本操作,比如,使用split操作,就会提示:

> TypeError: a bytes-like object is required, not 'str'

3.2 指明文件编码

打开文件时,指明文件编码,代码如下:

python">src_file_path = "a:\\src.txt"
with open(src_file_path, encoding='UTF-8') as file:data = file.readline().split(" ")

可以解决方法一中存在的问题。


http://www.ppmy.cn/server/145654.html

相关文章

【网络安全设备系列】12、态势感知

0x00 定义: 态势感知(Situation Awareness,SA)能够检测出超过20大类的云上安全风险,包括DDoS攻击、暴力破解、Web攻击、后门木马、僵尸主机、异常行为、漏洞攻击、命令与控制等。利用大数据分析技术,态势感…

线索二叉树

1.什么是线索二叉树? 线索二叉树是一种特殊的二叉树,它在传统二叉树的基础上,利用节点中原本为空的指针域存储指向节点前驱或后继的信息,从而在遍历时不需要递归或栈辅助,能够高效地找到前驱或后继节点。 前序遍历&am…

代码随想录打卡DAY20

算法记录第20天 [二叉树] 1.LeetCode 501. 二叉搜索树中的众数 题目描述: 给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。如果树…

深入解析经典排序算法:原理、实现与优化

文章目录 6. 堆排序(Heap Sort)原理Java 实现 7. 希尔排序(Shell Sort)原理Java 实现 8. 计数排序(Counting Sort)原理Java 实现 9. 基数排序(Radix Sort)原理Java 实现 深入浅出&am…

(STM32)ADC驱动配置

1.ADC驱动(STM32) ADC模块中,**常规模式(Regular Mode)和注入模式(Injected Mode)**是两种不同的ADC工作模式 常规模式:用于普通的ADC转换,是默认的ADC工作模式。 注入…

【ROS2】ROS2 与 ROS1 编码方式对比(C++实现)

目录 一、初始化和关闭节点二、发布者和订阅者三、服务和客户端四、参数管理五、日志记录六、生命周期管理 ROS1 主要使用roscpp和rospy作为客户端库,分别用于C和Python语言。 ROS2 引入了新的客户端库rclcpp(C)和rclpy(Python&a…

iOS开发之修改已有项目的项目名和类名前缀

一、修改项目名称 1、Xcode打开项目修改项目名称 直接选中项目,点击enter,直接修改项目名称 把buydodo改成xiedodo,点击enter Rename完了点继续,只有框框内的部分变了 2、退出Xcode关闭项目,修改剩下的项目名称 找…

论文笔记(五十七)Diffusion Model Predictive Control

Diffusion Model Predictive Control 文章概括摘要1. Introduction2. Related work3. 方法3.1 模型预测控制3.2. 模型学习3.3. 规划(Planning)3.4. 适应 4. 实验(Experiments)4.1. 对于固定奖励,D-MPC 可与其他离线 RL…