Получение "_pickle.unpicklingError: неверная клавиша загрузки" \ x00 ""Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Получение "_pickle.unpicklingError: неверная клавиша загрузки" \ x00 ""

Сообщение Anonymous »

Моя программа повышает ошибку, когда я передаю конкретные данные… < /p>
Я просто хотел знать, почему эта ошибка раскрытия поднимается. Я просто знаю, как обрабатывать это с помощью функции Dump (). Но я хочу знать, что возникает эта ошибка. < /p>
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()
< /code>
output: < /p>
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
check()
File "/home/rvd/Projects/POCs/class.py", line 21, in check
data = pickle.load(fo)
^^^^^^^^^^^^^^^
_pickle.UnpicklingError: invalid load key, '\x00'.


Подробнее здесь: https://stackoverflow.com/questions/797 ... ad-key-x00
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»