CBSE Class XII: Python Data File Handling| seek() and tell() | Random File Access

Random File Access in Python

seek() and tell() Functions

Python File seek() Method

syntax:
fileObject.seek(offset,position)

offset:

This is the position of the read/write pointer within the file. (number of characters)

position:

It has three values:
(this is optional and default value is 0)
0 : Start of the file
1 : Current position
2 : End of the file

Example:1
To create a binary file and store records into it

#to add a record in binary file
import pickle
import os

#function definition
def add_record():
     try:
          if os.path.isfile("stud1"):
               f=open("stud1","ab")
          else:
               f=open("stud1","wb")
          roll=int(input("Enter roll no "))
          name=input("Enter name ")
          name=name.upper()
          per=float(input("Enter per "))
          rec=[roll,name,per]
          pickle.dump(rec,f)
          print("Record added in file")
     except EOFError:
          f.close()

#function calling
add_record()

Example:2
To read a binary file and display all the records

#to display all the records
import pickle

#function definition
def std_dispall():
     try:
          f=open("stud1","rb")
          while True:
               rec=pickle.load(f)
               print(rec)

     
     except EOFError:
          f.close()
     except IOError:
          print("Unable to open the file")

#function calling
std_dispall()

Example:3
To read a binary file and display all the records(Randomly)

#display a record using seek() and tell()
import pickle

#function definition
def std_dispall():
     f=open("stud1","rb")
     f.seek(0,0)
     n=f.tell()
     print("File pointer at(start of the file) ",n)
     #rec=pickle.load(f)
     #print(rec)
     f.seek(0,2)
     n=f.tell()
     print("File pointer at(end of the file) ",n)
     #rec=pickle.load(f)
     #print(rec)

     try:
          f=open("stud1","rb")
          f.seek(0,0)
          while True:
               rec=pickle.load(f)
               n=f.tell()
               print("File pointer at ",n)
               print(rec)

     
     except EOFError:
          f.close()
     except IOError:
          print("Unable to open the file")

#function calling
std_dispall()