首页 理论教育 Python程序设计:文件定位

Python程序设计:文件定位

时间:2023-11-16 理论教育 版权反馈
【摘要】:例如:又例如:虽然在上面的代码中,fo.read 中只读了三个汉字,但是因为一个汉字占两个字节,所以tell()方法返回的是读取三个汉字后指针相对于文件开始位置的字节数6。

Python程序设计:文件定位

前面讨论的文本文件有一个位置指针从文件的第一个数据开始,依次进行读写,每读写一次指针向后移动一次(一次移动多少字节,由读写方式而定),这种读写方式称为顺序文件。但在实际对文件的应用中,还往往需要对文件中的某个特定位置的数据进行处理。这时我们需要使用seek ()方法对文件的读写位置进行定位,使用tell()方法获取文件当前的读写位置。

1.tell() 方法

tell()方法的用法如下:

其功能是返回文件指针的当前位置,即相对于文件开始位置的字节数,下一个读取或写入操作将要发生的当前位置。例如:

这是文件刚打开时的位置,即第一个字符的位置为0。

例如:

又例如:

虽然在上面的代码中,fo.read (3)中只读了三个汉字,但是因为一个汉字占两个字节,所以tell()方法返回的是读取三个汉字后指针相对于文件开始位置的字节数6。(www.xing528.com)

2.seek () 方法

seek ()方法的用法如下:

其功能是更改当前文件指针的位置。其中偏移参数表示要移动的字节数,偏移参数为正数表示朝文件尾方向移动,偏移参数为负数表示朝文件头方向移动;文件指针移动时以设定的参考点为基准,如果参考点被设置为0,表示以文件的开始位置为基准开始偏移。如果设置为1则是以当前位置作为基准开始偏移。如果设置为2,则以文件的末尾作为基准开始偏移。如果参考点不写,取默认值0。例如:

“data.txt”是一个文本文件,可以用文本方式读取,也可以用二进制方式读取,两者的差别仅仅体现在换行符的处理上。二进制读取时需要将 “\n”转换成 “\r\n”,即多出一个字符。当文件中不存在回车换行符时,文本读与二进制读的结果是一样的。此外,文件所有字符被读完后,文件读写位置位于文件末尾,再读则读出空串。此时可以移动文件位置。

从文件开始处移动10个字节后读取文件全部字符。

看下面文件位置移动的结果。

注意:Python3.x限制文本文件只能相对于文件起始位置进行偏移,即参考点的值为默认值0时,才能指定移动的字节数。如果参考点的值为1或2,偏移量只取0。seek (0,1)定位于当前位置值,seek (0,2)定位于文件末尾。例如:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈