实现对文件指针的移动,文件对象提供了 tell() 函数和 seek() 函数。tell() 函数用于判断文件指针当前所处的位置,而 seek() 函数用于移动文件指针到文件的指定位置。注意,当向文件中写入数据时,如果不是文件的尾部,写入位置的原有数据不会自行向后移动,新写入的数据会将文件中处于该位置的数据直接覆盖掉。
file.tell()
其中,file 表示文件对象。http://c.biancheng.net
读取 a.txt 的代码如下:f = open("a.txt",'r') print(f.tell()) print(f.read(3)) print(f.tell())运行结果为:
0
htt
3
file.seek(offset[, whence])
其中,各个参数的含义如下:whence == 0 &&offset == 3
(即 seek(3,0) ),表示文件指针移动至距离文件开头处 3 个字符的位置;当whence == 1 &&offset == 5
(即 seek(5,1) ),表示文件指针向后移动,移动至距离当前位置 5 个字符处。下面程序示范了文件指针操作:注意,当 offset 值非 0 时,Python 要求文件必须要以二进制格式打开,否则会抛出 io.UnsupportedOperation 错误。
f = open('a.txt', 'rb') # 判断文件指针的位置 print(f.tell()) # 读取一个字节,文件指针自动后移1个数据 print(f.read(1)) print(f.tell()) # 将文件指针从文件开头,向后移动到 5 个字符的位置 f.seek(5) print(f.tell()) print(f.read(1)) # 将文件指针从当前位置,向后移动到 5 个字符的位置 f.seek(5, 1) print(f.tell()) print(f.read(1)) # 将文件指针从文件结尾,向前移动到距离 2 个字符的位置 f.seek(-1, 2) print(f.tell()) print(f.read(1))运行结果为:
0
b'h'
1
5
b'/'
11
b'a'
21
b't'
上面程序示范了使用 seek() 方法来移动文件指针,包括从文件开头、指针当前位置、文件结尾处开始计算。运行上面程序,结合程序输出结果可以体会文件指针移动的效果。注意:由于程序中使用 seek() 时,使用了非 0 的偏移量,因此文件的打开方式中必须包含 b,否则就会报 io.UnsupportedOperation 错误,有兴趣的读者可自定尝试。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有