[Python] Getting "_pickle.UnpicklingError: invalid load key, '\x00'"

Discussão em 'Python' iniciado por Stack, Julho 19, 2025.

  1. Stack

    Stack Membro Participativo

    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...

Compartilhe esta Página