n documentation’s stern security warnings about pickle. However, pickle has been used to serialize objects for many years, so you’re likely to encounter it in Python legacy code. using the pickle module’s dump function to serialize the dictionary into a file and its load function to deserialize the object. Pickle is a binary format, so this exercise requires binary files. ”Reimplement your solutions to Exercises 9.6. Use the file-open mode 'wb' to open the binary file for writing and 'rb' to open the binary file for reading. Function dump recei
(pickle Object Serialization and Deserialization) We mentioned that we prefer to use JSON for object serialization due to the Python documentation’s stern security warnings about pickle. However, pickle has been used to serialize objects for many years, so you’re likely to encounter it in Python legacy code.
using the pickle module’s dump function to serialize the dictionary into a file and its load function to deserialize the object. Pickle is a binary format, so this exercise requires binary files.
”Reimplement your solutions to Exercises 9.6. Use the file-open mode 'wb' to open the binary file for writing and 'rb' to open the binary file for reading. Function dump receives as arguments an object to serialize and a file object in which to write the serialized object. Function load receives the file object containing the serialized data and returns the original object. The Python documentation suggests the pickle file extension .p.
Excercise 9.6 code
import json
def main():
n = int(input("Enter the number of students: "))
data = []
for i in range(n):
first = input("\nEnter First Name of Student " + str(i + 1) + ": ")
last = input("Enter Last Name of Student " + str(i + 1) + ": ")
te1 = int(input("Enter Te_st 1 Grade of Student " + str(i + 1) + ": "))
te2 = int(input("Enter Te_st 2 Grade of Student " + str(i + 1) + ": "))
te3 = int(input("Enter Te_st 3 Grade of Student " + str(i + 1) + ": "))
info = {}
info['first_name'] = first
info['last_name'] = last
info['ex_am1'] = te1
info['ex_am2'] = te2
info['ex_am3'] = te3
data.append(info)
gradebook_dict = {'students': data}
with open("grades.json", 'w') as _file:
json.dump(gradebook_dict, _file, indent=4)
print("\nWriting Done.\n")
with open("grades.json", 'r') as _file:
data = (json.load(_file))['students']
print(f'{"First Name":>15} {"Last Name":>15} {"test 1":>6} {"test 2":>6} {"test 3":>6} {"average":>7}')
totalTest1 = 0
totalTest2 = 0
totalTest3 = 0
count = 0
for i in data:
t1 = i['ex_am1']
t2 = i['ex_am2']
t3 = i['ex_am3']
totalTest1 += t1
totalTest2 += t2
totalTest3 += t3
count += 1
fname = i['first_name']
lname = i['last_name']
avg = (t1 + t2 + t3) / 3
print(f"{fname:>15} {lname:>15} {t1:>6d} {t2:>6d} {t3:>6d} {avg:>7.2f}")
print("-" * 60)
print(f"{'Test average':<32} {totalTest1 / count:>6.2f} {totalTest2 / count:>6.2f} {totalTest3 / count:>6.2f}")
main()
The answer is an given below :
Step by step
Solved in 2 steps