Python小记 —— 文件读写操作里read()方法的深究

**

语法

**
格式:read(size)
在read()方法里,size表示要从文件中读取的数据长度,如果没有指定size或者指定为“None”就表示读取文件里的全部数据。

特别需要注意点:

  1. read()的读取机制因访问文件模式(文本文件模式或二进制模式)不同而异。访问模式不同,所调用的类就有所不同,那么它返回的对象也有所不同。这里最明显的就是size长度计数单位的区别,下一点作解。
  2. 在文本文件读取模式,size的计数是以Unicode字符的个数计数的,在二进制文件读取模式下,size计数是以字节为单位计数。
  3. 每次读取文件都是从当前指针位置(即上一次的位置)开始读取数据。

两种访问模式的比较

文本文件访问模式:
有一种真相叫做“有图有真相”,看下面啦,嘻嘻嘻!
文本文件访问模式
在上面说过的,文本文件访问模式是以Unicode字符个数计数的。那么重点来了,Unicode字符技术是咋回事,还是看下面:

1、在纯ASCII码下,字节数=字符串长度=字符个数,因为每个字符就一个字节。
2、在Unicode下,字节数/2=字符串长度=字符个数,因为每个字符都是2个字节。

如果没看懂,建议找找相关资料了解一下ASCII码,Unicode编码规范还有UTF-8编码方式。
**对上述读取文件代码简单解释一下:**以Unicode字符个数计数,即size=2;那么以上述公式可得字节数为4,即表示两个中文字符了,所以输出内容“你好”。tell()方法返回文件指针的当前位置,以字节数为单位。

二进制访问模式:
老规矩,“有图有真相”,看下面啦,嘻嘻嘻!
二进制访问模式
其中,decode() 方法以指定的编码格式解码 bytes 对象,到这里相信都明白了,二进制就是以字节码为计数单位的。

有不足之处望留言指正

——————END——————
Programmer:柘月十七

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值