Как исправить ошибку EOFError при откреплении от объекта BytesIO? - PullRequest
0 голосов
/ 28 октября 2018

Возможно ли это сделать и снять данные без создания файла для него?В вопросе, который был предложен как дубликат, я не вижу, как это исправить.

Pickle.dump для переменной

Я хочу сделать это удаленно, чтобы не создавать новые файлы на лету.Все примеры с травлением и расслоением показывают использование pickle.dump и pickle.load.Я читаю документы, и аргумент файла может быть объектом BytesIO, но когда я пытаюсь использовать функцию load (), я получаю.

EOFError: исчерпан ввод

Может кто-нибудь дать мне несколько примеров, как это сделать?В настоящее время у меня есть:

a = A("some_random_string")
bio = BytesIO(b"some_bytes_data")
d = pickle.dump(a, bio)
f = pickle.Unpickler(bio).load()

Загрузка дает мне вышеупомянутую ошибку.Что я делаю не так?

1 Ответ

0 голосов
/ 28 октября 2018

Я все-таки смог ее решить.Использование дампа вместо дампа сделало это возможным для меня.Пример того, как это работает в моем случае сейчас:

from io import BytesIO
import pickle
a = b"asdf"
f = pickle.dumps(a)
file = BytesIO(f)
unpickled = pickle.load(file) # It is equal to initial value.

Может быть, это поможет кому-то еще.

...