为什么我不能 pickle unicodecsv.reader 的实例?
Why can't I pickle an instance of unicodecsv.reader?
我需要 cPickle.dump
一个存储 unicodecsv.reader
class 实例的对象。当我尝试这样做时,进程以异常终止:
PicklingError: Can't pickle <type '_csv.reader'>: it's not the same object as _csv.reader
我发现当您对同一对象进行多次不同的导入时,这可能会成为问题,但我的情况并非如此。
你能给我一些提示吗?谢谢!
你的问题是 csv.reader
个对象不能被 pickle 所以 unicodecsv.reader
个对象也不能被 pickle。 pickle csv.reader
对象通常没有意义,因为它们通常与文件一起使用,而文件也不能被 pickle。
您的问题没有简单的解决方案。您可以定义自己的 custom pickling methods 告诉 pickler 如何在不 pickle csv.reader
对象的情况下 pickle 对象,或者您可以重写对象的实现,这样它就不需要存储一个实例unicodecsv.reader
。
我的解决方案是 pickling list(unicodecsv.reader)。
我需要 cPickle.dump
一个存储 unicodecsv.reader
class 实例的对象。当我尝试这样做时,进程以异常终止:
PicklingError: Can't pickle <type '_csv.reader'>: it's not the same object as _csv.reader
我发现当您对同一对象进行多次不同的导入时,这可能会成为问题,但我的情况并非如此。
你能给我一些提示吗?谢谢!
你的问题是 csv.reader
个对象不能被 pickle 所以 unicodecsv.reader
个对象也不能被 pickle。 pickle csv.reader
对象通常没有意义,因为它们通常与文件一起使用,而文件也不能被 pickle。
您的问题没有简单的解决方案。您可以定义自己的 custom pickling methods 告诉 pickler 如何在不 pickle csv.reader
对象的情况下 pickle 对象,或者您可以重写对象的实现,这样它就不需要存储一个实例unicodecsv.reader
。
我的解决方案是 pickling list(unicodecsv.reader)。