每次读取一行

Python文件的读取,除了全部读取和字节读取,还可以一行行读取。

假设文本内容如上,每一行三个相同的数字,共九行。

使用readline函数,当我们不带参数的读取时,程序会把文件的第一行读取进来,以字符串的形式存储起来。

我们把内容和数据类型打印到屏幕,可以看到之间有个空白,那是没有显示出来的标记符号,应该可以猜得到,换行符号\n。

再进一步拆解,把字符串按照每个字符拆分。

可以得到同样的结果,而且换行行为依然存在。

读取全部

在readline函数加个s,就是读取全部,和read函数不同的是,按照一行一行存储起来的列表数据类型,每行为一个字符串列表元素。

在打印出来的时候,会发现换行符出现了。除了最后一行没有,前面若干行都有。

如果用for遍历循环列表的话,可以看到每一行内容(数字)后面,都有一个空行,这就是换行符造成的影响。

如果打算让换行行为消失,可以把结尾赋空值,这样打印出来,就紧凑多了。

文件定位

为了好区分输出的结果,文本内容更改如上。

seek函数可以用来定位,有两个参数,第一个参数是字节,也代表着定位的偏移,这个偏移是相对的,取决于文件打开的方式,r是文件头,w(删除后)是文件头,a是文件尾。第二个参数,取决于偏移量的基准,0代表着文件头,1是当前位置,2为文件尾,和文件打开的方式有雷同的地方。

偏移量是零,那就是从头读取,如果是一,就是从第二个字符读取,后面用了读行函数,读取了23。

想一下,为何从偏移量是5开始,才是第二行?还记得上面提到的换行符吗,\和n是两个字符。

seek函数最常用的用法,就是重置(定位)到文件头。

PS:本文代码基于Windows 10,Python 3.10.4。