Я хочу сохранить объект в файле, чтобы я мог использовать его позже (после закрытия программы).
Я пытался использовать pickle, но, похоже, он не похож на мой объект: D
Traceback (most recent call last):
File "(path)", line 4, in <module>
pickle.dump(object, f)
AttributeError: Can't pickle local object '_createenviron.<locals>.encodekey'
вот код:
import pickle
object = MyWeirdClass()
with open("data.pickle", "wb") as f:
pickle.dump(object, f)
Есть ли другой способ сохранить объекты (например, внешняя библиотека)? Я сделал что-то не так, и я получил эту ошибку? Мой MyWeirdClass () класс работает отлично, я тестировал его несколько раз, и я получил именно те результаты, которые я ожидал.
РЕДАКТИРОВАТЬ:
я обнаружил, что проблема в том, что одна из переменных объекта - это объект selenium.webdriver.chrome.webdriver.WebDriver . после удаления этого объекта (после выполнения того, что я хотел с ним) он работал нормально.
ВТОРОЕ РЕДАКТИРОВАНИЕ:
я также получил эту ошибку:
RecursionError: maximum recursion depth exceeded while pickling an object
В строке кода я попытался записать объект в файл.
Я обнаружил, что должен установить sys.setrecursionlimit () на более высокое значение, поэтому вместо этогоустановить его в случайные значения, пока я не получу никаких ошибок, я делаю это:
import pickle
import sys
default_cursion_limit = sys.getrecursionlimit()# defalut is 1000
object = MyWeirdClass()
while True:
try:
with open("data.pickle", "wb") as f:
pickle.dump(object, f)
break
except RecursionError:
default_cursion_limit += 50
sys.setrecursionlimit(default_cursion_limit)# looks like its working with 2600