**
语法
**
格式:read(size)
在read()方法里,size表示要从文件中读取的数据长度,如果没有指定size或者指定为“None”就表示读取文件里的全部数据。
特别需要注意点:
- read()的读取机制因访问文件模式(文本文件模式或二进制模式)不同而异。访问模式不同,所调用的类就有所不同,那么它返回的对象也有所不同。这里最明显的就是size长度计数单位的区别,下一点作解。
- 在文本文件读取模式,size的计数是以Unicode字符的个数计数的,在二进制文件读取模式下,size计数是以字节为单位计数。
- 每次读取文件都是从当前指针位置(即上一次的位置)开始读取数据。
两种访问模式的比较
文本文件访问模式:
有一种真相叫做“有图有真相”,看下面啦,嘻嘻嘻!
在上面说过的,文本文件访问模式是以Unicode字符个数计数的。那么重点来了,Unicode字符技术是咋回事,还是看下面:
1、在纯ASCII码下,字节数=字符串长度=字符个数,因为每个字符就一个字节。
2、在Unicode下,字节数/2=字符串长度=字符个数,因为每个字符都是2个字节。
如果没看懂,建议找找相关资料了解一下ASCII码,Unicode编码规范还有UTF-8编码方式。
**对上述读取文件代码简单解释一下:**以Unicode字符个数计数,即size=2;那么以上述公式可得字节数为4,即表示两个中文字符了,所以输出内容“你好”。tell()方法返回文件指针的当前位置,以字节数为单位。
二进制访问模式:
老规矩,“有图有真相”,看下面啦,嘻嘻嘻!
其中,decode() 方法以指定的编码格式解码 bytes 对象,到这里相信都明白了,二进制就是以字节码为计数单位的。
有不足之处望留言指正
——————END——————
Programmer:柘月十七