My program raises unpickling error when I pass specific data… I just wanted to know why that unpickling error raises.. I just know how to handle this using the dump() function. but I wanna know what that error raises. import pickle def create(): fo = open("binary.dat", "wb") count = int(input("Enter number of records: ")) for i in range(count): roll = int(input("Enter roll no: ")) name = input("Enter name: ") class_name = input("Enter class: ") data = [roll, name, class_name] pickle.dump(data, fo) fo.close() def check(): fo = open("binary.dat","rb+") search = int(input("Enter roll.no to search: ")) name = input("Enter name to update: ") try: while True: rpos = fo.tell() data = pickle.load(fo) if data[0] ==search: data[1] = name fo.seek(rpos) pickle.dump(data, fo) #fo.truncate() except EOFError: fo.close() def readall(): with open("binary.dat", "rb") as fo: try: while True: data = pickle.load(fo) print(data) except EOFError: pass create() readall() check() readall() Output: rvd@betaceti:~/Projects$ /home/rvd/Projects/.venv/bin/python /home/rvd/Projects/POCs/class.py Enter number of records: 2 Enter roll no: 1 Enter name: er Enter class: 12 Enter roll no: 2 Enter name: we Enter class: 12 [1, 'er', '12'] [2, 'we', '12'] Enter roll.no to search: 1 Enter name to update: kjsn [1, 'kjsn', '12'] [2, 'we', '12'] rvd@betaceti:~/Projects$ /home/rvd/Projects/.venv/bin/python /home/rvd/Projects/POCs/class.py Enter number of records: 1 Enter roll no: 1 Enter name: s Enter class: 12 [1, 's', '12'] Enter roll.no to search: 1 Enter name to update: zdrtgh [1, 'zdrtgh', '12'] rvd@betaceti:~/Projects$ /home/rvd/Projects/.venv/bin/python /home/rvd/Projects/POCs/class.py Enter number of records: 2 Enter roll no: 1 Enter name: s Enter class: 12 Enter roll no: 2 Enter name: er Enter class: 12 [1, 's', '12'] [2, 'er', '12'] Enter roll.no to search: 1 Enter name to update: dfrgdr Traceback (most recent call last): File "/home/rvd/Projects/POCs/class.py", line 42, in <module> check() File "/home/rvd/Projects/POCs/class.py", line 21, in check data = pickle.load(fo) ^^^^^^^^^^^^^^^ _pickle.UnpicklingError: invalid load key, '\x00'. Continue reading...