Python seek函数

Python seek函数教程

Python 中,读写 文件 之前都需要使用 open 函数打开文件。 使用 open 打开文件之后,返回的 file 对象的文件指针默认总是指向文件的开始。

所以,每次打开文件进行读取时,总是从文件的开始处开始读取,同样,每次打开文件进行写入时,总是从文件的开始处开始写入,但 Python 为我们提供了 seek 函数,该函数可以用来移动文件指针。

seek函数详解

语法

n = fileObject.seek(offset[, whence])

参数

参数 描述
n 新的文件位置。
fileObject 文件对象。
offset 偏移量。
whence 可选参数,默认为 0。表示给 offset 参数一个定义,表示要从哪个位置开始偏移。
0 :代表从文件开头开始偏移。
1 : 代表从当前位置开始偏移。
2 : 代表从文件末尾开始偏移。

返回值

如果操作成功,则返回新的文件位置,如果操作失败,则函数返回 -1。

说明

fileObject 表示已经打开的文件对象,offset 表示开始的偏移量,也就是代表需要移动偏移的字节数。

whence 是可选 参数,默认值为 0。 表示给 offset 参数一个定义,表示要从哪个位置开始偏移,0 代表从文件开头开始偏移,1 代表从当前位置开始偏移,2 代表从文件末尾开始偏移。

案例

使用seek函数移动文件指针

使用 seek 函数移动文件指针

print("嗨客网(www.haicoder.net)") file = open("C:/haicoder.txt", "w+") file.write("Hello HaiCoder") file.write("Hello HaiCoder") print("file write success") fileContent = file.read() print("file content =", fileContent) file.seek(0) fileContent = file.read() print("file content =", fileContent) file.close()

程序运行后,控制台输出如下:

46_Python seek函数.png

我们首先打开文件,然后连续两次写入文件,写入之后,使用打开文件返回的 file 对象开始读文件,此时,我们发现,读取的内容为空。

因为,此时的 file 指针因为写文件的原因以及被移动到了文件尾,所以此时读取文件的内容为空,接着,我们使用 seek 函数,将文件指针移动到文件开始。

此时,再次读取文件,我们发现读取到了我们写入的文件内容,最后,调用 close 函数关闭打开的文件。

使用seek函数移动文件指针

使用 seek 函数移动文件指针

print("嗨客网(www.haicoder.net)") file = open("C:/haicoder.txt", "w+") file.write("Hello HaiCoder,I am study python from haicoder") print("file write success") fileContent = file.read() print("file content =", fileContent) file.seek(0) fileContent = file.read() print("file content =", fileContent) file.seek(0) file.seek(0, 2) fileContent = file.read() print("file content =", fileContent) file.seek(6) file.seek(0, 1) fileContent = file.read() print("file content =", fileContent) file.close()

程序运行后,控制台输出如下:

47_Python seek函数.png

我们首先打开文件,然后写入文件,写入之后,使用打开文件返回的 file 对象开始读文件,此时,我们发现,读取的内容为空。

因为,此时的 file 指针因为写文件的原因以及被移动到了文件尾,所以此时读取文件的内容为空,接着,我们使用 seek 函数,将文件指针移动到文件开始。

此时,再次读取文件,我们发现读取到了我们写入的文件内容,接着,我们再次将文件指针移动到文件开始,再次使用 seek 函数,并且 whence 参数传递 2,表明从文件尾开始偏移 0,即移动到文件尾,所以,此时再次读取,还是读的内容为空。

最后,我们将指针移动到第六个字符处,并再次将 whence 参数传递 1,表明从文件指针当前位置开始偏移 0,此时再次读取,读取到了文件从位置 6 开始之后的所有内容。

Python seek函数总结

Python 为我们提供了 seek 函数,该函数可以用来移动文件指针。Python seek 函数语法:

n = fileObject.seek(offset[, whence])