我怎么知道 pickle.dump() 是否成功保存了文件
How can I know if pickle.dump() successfully saved the file
我怎么知道 pickle.dump()
是否成功保存了 pickle 文件?
在 docs 中,我没有看到指示成功或失败的 return 值。
我正在使用 python 3,目前在 jupyter notebook 中
如果 pickle.dump
或 pickle.dumps
失败,将抛出错误。如果某些较低级别的系统调用失败,请参阅 docs further down for what can and can't be pickled. You may also get an OSError
(link)
但是请注意,即使 pickle.dump
没有抛出错误,您仍然可能无法加载 pickle
d 数据。例如,您 pickle
d 的对象可能会使用导入或引用在 pickling
代码的上下文中定义的函数,例如 Jupyter notebook 定义了引用的自定义函数通过腌制对象。如果您现在将该 pickle 对象文件发送到另一台机器,它将看不到对象中引用的函数,并且 unpickling 将失败。
同样,如果 picled 对象所依赖的模块发生 API 更改,导入路径可能已更改,并且 unpickling 将再次失败。
您可能还想看看 dill
涵盖的案例比 pickle
https://github.com/uqfoundation/dill
我怎么知道 pickle.dump()
是否成功保存了 pickle 文件?
在 docs 中,我没有看到指示成功或失败的 return 值。
我正在使用 python 3,目前在 jupyter notebook 中
如果 pickle.dump
或 pickle.dumps
失败,将抛出错误。如果某些较低级别的系统调用失败,请参阅 docs further down for what can and can't be pickled. You may also get an OSError
(link)
但是请注意,即使 pickle.dump
没有抛出错误,您仍然可能无法加载 pickle
d 数据。例如,您 pickle
d 的对象可能会使用导入或引用在 pickling
代码的上下文中定义的函数,例如 Jupyter notebook 定义了引用的自定义函数通过腌制对象。如果您现在将该 pickle 对象文件发送到另一台机器,它将看不到对象中引用的函数,并且 unpickling 将失败。
同样,如果 picled 对象所依赖的模块发生 API 更改,导入路径可能已更改,并且 unpickling 将再次失败。
您可能还想看看 dill
涵盖的案例比 pickle
https://github.com/uqfoundation/dill