python怎么读写文件错误-Python 文件操作之读写错误

错误还原

读错误

在对文件进行读操作过程中,试图将txt文件中的数据按照4个字节的大小(1点)依次读出并进行数据处理 ,可读到ae99 1a41时,数据不再连续,1a无法读出,百思不得其解,各种尝试后仍然一筹莫展,一度怀疑python对于文件操作存在bug。

代码如下:

uartfile = open('addata0.txt','r')

data = uartfile.read(4)

写错误

对文件写操作时,产生同样错误,再遇到0a0d时无法连续写入。

基础知识

文件的读写操作存在两种模式:文本模式和二进制模式。

所有文件在计算机的存储在物理层以二进制0或1的编码呈现,所以同一文件的文本模式与二进制模式底层二进制相同,只是在上层呈现方式上的编码不同而已。

文本模式是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等。

二进制模式是基于值编码的文件。

文本文件基本上是定长编码的(也有非定长的编码如UTF-8),每个字符在具体编码中是固定的,ASCII码是8个比特的编码,UNICODE一般占16个比特。而二进制文件可看成是变长编码的,因为数值的大小和位数的长度有关系。

目前自己接触的二进制模式和文本模式的不同主要有以下几个:

1、换行符在Windows 文本里是 (0x0D0A,回车换行),在 Linux 文本里是 (0x0A换行符)。

2、 结束符(0x1A),在Linux下采用文本模式读写文本文件不会存在结束符现象,但是在Windows下遇到该问题。

解决方法

在python的文本操作下存在以下模式:

r :读文本模式

w :写文本模式

rb :读二进制模式

wb :写二进制模式

对文本文件进行文本操作(读取或写入字符),直接采用r或者w。

对文本文件进行二进制操作(读出或写入数据),采用rb或者wb。

uartfile = open('addata0.txt','rb')

channl1 = open ('channl1.txt','wb')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值