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个字节,也就是读取一个完整汉字之后,再读取下一个汉字的其中一个字节,
再去编码会怎么样?答案是会报错。
有了计划记得推动,不要原地踏步。