Python seek method:
The seek method of IOBase class sets the stream position to the given byte offset. The offset is interpreted relative to the position indicated by whence. In other words, the seek() method changes the position of the file handle to the specified position.
Method Signature
The signature for the seek method is as shown below.
fileObject.seek(offset, whence)
Method parameters and return type
- Here, the seek() method takes offset and whence as a parameter. The offset is a number of bytes file handle needs to move. Whereas, whence is an optional parameter that indicates the position from where the offset is calculated. It takes one of the three values given below :
0 – offset calculated from the beginning
1 – offset calculated from the current position
2 – offset calculated from the end - However, it returns a new absolute position.
Python seek method Examples:
Example 1: In this case, we will open a file in w+ mode and read it after writing.
# Opening a file
f1 = open("test.txt", "w+")
# Writing
f1.write("Hello World")
f1.write("\nPython Programming")
# This statement will not read anything as file pointer points to end
print("Reading after write but before seek")
print(f1.read())
#Using seek
f1.seek(0)
#Reading
print("Reading after seek")
print(f1.read())
# closing
f1.close()
Output
Reading after write but before seek
Reading after seek
Hello World
Python Programming
Example 2: In this case, we will open a file in read mode and set whence to read from the current position.
# Opening a file
f1 = open("test.txt", "r")
#Using seek
f1.seek(6)
f1.seek(0,1)
#Reading from current cursor position
print("Reading after seek")
print(f1.read())
# closing
f1.close()
Output
Reading after seek
World
Python Programming
Example 3: In this case, we will open a file in w+ mode and use the seek method to overwrite the content of file.
# Opening a file
f1 = open("test.txt", "w+")
f1.write("Hello World")
f1.write("Welcome to world of Programming")
#Using seek and writing
f1.seek(5)
f1.write("This text will be overwritten")
#Reading
print("Reading file")
f1.seek(0)
print(f1.read())
# closing
f1.close()
Output
Reading file
HelloThis text will be overwrittengramming
Conclusion
Hence, the seek() method sets the position of filehandle to the desired offset.
References
Happy Learning 🙂