有没有办法检查文件是否已被创建pickle?我可以捕获引发的异常,pickle.load但没有特定的"不是pickle文件"异常.
mar*_*eau 11
Pickle文件没有标题,所以没有标准的方法来识别它们,而不是尝试取消标记,并查看是否有任何异常.
您可以通过继承模块中的Pickler()和Unpickler()类来定义自己的增强协议,其中包含某种类型的标头pickle.然而,这不能用更快的cPickle模块来完成,因为其中有工厂函数不能被子类化[1].
一种更灵活的方法是定义您自己的独立类,这些类在其实现中使用来自这些模块中的任何一个的对应Pickler()和Unpickler()实例.
更新
所有泡菜文件的最后一个字节应该是pickle.STOP操作码,所以虽然没有头,有是实际上是一个很小的拖车这将是一个相对简单的事情来检查.
根据您的具体用法,您可以通过更精细的补充来避免补充,因为任何超过STOP腌制对象表示中的操作码的数据都会被忽略[2].
pickle.loads(),也适用于pickle.load()目前根据后者实施的文件.
| 归档时间: |
|
| 查看次数: |
5714 次 |
| 最近记录: |