为什么我不能挑选unicodecsv.reader的实例?

时间:2016-02-20 14:00:06

标签: python python-2.7 pickle

我需要cPickle.dump一个存储unicodecsv.reader类实例的对象。当我尝试这样做时,该过程终止,但异常:

PicklingError: Can't pickle <type '_csv.reader'>: it's not the same object as _csv.reader

我发现当你对同一个对象进行多次不同的导入时可能会出现问题,但这不是我的情况。

你可以给我一些关于发生了什么的暗示吗?谢谢!

2 个答案:

答案 0 :(得分:2)

您的问题是csv.reader个对象无法被腌制,因此unicodecsv.reader个对象也无法被腌制。挑选csv.reader对象通常没有意义,因为它们通常与文件一起使用,而这些文件也无法被腌制。

对您的问题没有简单的解决方案。您可以定义自己的custom pickling methods,告诉pickler如何在不挑选csv.reader对象的情况下挑选对象,或者您可以重写对象的实现,这样它就不会需要存储unicodecsv.reader的实例。

答案 1 :(得分:-1)

我的解决方案是酸洗清单(unicodecsv.reader)。