python读写文件模式的区别

文章更新于:2024-05-21

参考资料:字符编码,占用空间大小

读写模式


注:
如果使用 r+,写完未关闭文件直接读,只能读取到上一步写位置后面的内容(而后面没有内容,所以读的内容为空)。
如果使用 w+,会先清空文件,即使写入数据直接读得到的内容也为空(亦是因为文件指针在文件尾,后面没有数据)。
上述两种情况皆是由于文件指针不在文件头造成的,
使用 file.seek(0) 将指针移到文件头即可。

上面的模式默认隐含 t (文本模式)参数,即下表第一行等效于第二行,
若想使用二进制模式则显式添加b参数(第三行):

模式字符的位置可随意摆放:r+t = rt+ = t+r = +rt = +tr =

文件指针定位

1、r 模式下,文件指针位于文件头,读完位于文件尾。想要再次读取,需要将指针移动到指定位置或直接移动到文件头。
2、w+ 模式下,文件指针随着写入一直往后移动,始终位于文件内容末尾,想要读取之前写入的内容,也需要将指针往前移动。

3、rt 模式下,read(n) 指定的是字符个数,write() 返回的也是字符个数,且不同编码下,字符对应的字节数不同。
4、而 rb 则是字节个数。

读取字符数示例:

读取字节数示例:

那有的同学就有疑问了,UTF-8 字符集一个汉字用了3个字节,如果我读取4个字节,也就是读取一个完整汉字之后,再读取下一个汉字的其中一个字节,
再去编码会怎么样?答案是会报错。

posted @ 2021-08-31 21:11  那个白熊  阅读(346)  评论(0编辑  收藏  举报