The seek() method in Python is used to change the file’s current position. This method allows you to move the file pointer to a specific location within the file, enabling random access to file contents. It is useful for tasks such as reading or writing at specific positions within a file.
Table of Contents
- Introduction
seek()Method Syntax- Understanding
seek() - Examples
- Basic Usage
- Using
seek()to Append Data - Using
seek()withtell()
- Real-World Use Case
- Conclusion
Introduction
The seek() method is a built-in file method in Python that changes the file’s current position. This method is essential for file operations that require moving the file pointer to a specific location, such as reading or writing data at a particular offset.
seek() Method Syntax
The syntax for the seek() method is as follows:
file.seek(offset, whence=0)
Parameters:
- offset: The number of bytes to move the file pointer. It can be a positive or negative integer.
- whence (optional): Specifies the reference position from which to move the pointer. It can be:
0: The beginning of the file (default).1: The current file position.2: The end of the file.
Returns:
None. The method changes the file’s current position.
Understanding seek()
The seek() method moves the file pointer to a specified location within the file. The offset parameter determines the number of bytes to move, and the whence parameter specifies the reference point for the movement. By default, whence is set to 0, which means the movement is relative to the beginning of the file.
Examples
Basic Usage
To demonstrate the basic usage of seek(), we will open a file, move the file pointer to a specific position, and read data from that position.
Example
# Creating a sample file
with open("example.txt", "w") as file:
file.write("Hello, world!\nWelcome to Python file handling.")
# Opening the file in read mode
file = open("example.txt", "r")
# Moving the file pointer to the 7th byte
file.seek(7)
print("Current position:", file.tell())
# Reading from the current position
data = file.read()
print("Data from position 7:\n", data)
# Closing the file
file.close()
Output:
Current position: 7
Data from position 7:
world!
Welcome to Python file handling.
Using seek() to Append Data
This example shows how to use seek() to move the file pointer to the end of the file before appending new data.
Example
# Opening the file in append mode
file = open("example.txt", "a+")
# Moving the file pointer to the end of the file
file.seek(0, 2)
print("Current position:", file.tell())
# Appending new data
file.write("\nThis is an appended line.")
# Closing the file
file.close()
Output:
Current position: 47
Using seek() with tell()
This example demonstrates how to use seek() in conjunction with the tell() method to determine the current file pointer position.
Example
# Opening the file in read mode
file = open("example.txt", "r")
# Moving the file pointer to the beginning of the file
file.seek(0)
print("Current position:", file.tell())
# Moving the file pointer to the 12th byte
file.seek(12)
print("Current position:", file.tell())
# Moving the file pointer 5 bytes forward from the current position
file.seek(5, 1)
print("Current position:", file.tell())
# Moving the file pointer to the end of the file
file.seek(0, 2)
print("Current position:", file.tell())
# Closing the file
file.close()
Output:
Current position: 0
Current position: 12
Current position: 17
Current position: 79
Real-World Use Case
Random Access to Binary Files
In real-world applications, the seek() method can be used for random access to binary files, such as reading specific headers or data segments from a file.
Example
def read_header(file_path):
with open(file_path, "rb") as file:
# Read the first 10 bytes (header)
header = file.read(10)
print("Header:", header)
# Move to the 50th byte and read the next 10 bytes
file.seek(50)
data_segment = file.read(10)
print("Data segment at 50-60 bytes:", data_segment)
read_header("binary_file.bin")
Conclusion
The seek() method in Python is used for changing the file’s current position, enabling random access to file contents. This method is essential for operations that require reading or writing data at specific positions within a file. By using seek(), you can efficiently navigate and manipulate file contents for various applications.