Questions tagged «pickle»

适用于Python的对象序列化模块。与Python标记一起使用此标记可解决与用Pickle存储或加载对象有关的问题。


8
Python多处理PicklingError:无法腌制<type'function'>
很抱歉,我无法使用更简单的示例重现该错误,并且我的代码过于复杂,无法发布。如果我在IPython Shell中而不是在常规Python中运行该程序,那么效果会很好。 我查阅了有关此问题的以前的笔记。它们都是由使用池调用在类函数中定义的函数引起的。但这不是我的情况。 Exception in thread Thread-3: Traceback (most recent call last): File "/usr/lib64/python2.7/threading.py", line 552, in __bootstrap_inner self.run() File "/usr/lib64/python2.7/threading.py", line 505, in run self.__target(*self.__args, **self.__kwargs) File "/usr/lib64/python2.7/multiprocessing/pool.py", line 313, in _handle_tasks put(task) PicklingError: Can't pickle &lt;type 'function'&gt;: attribute lookup __builtin__.function failed 我将不胜感激任何帮助。 更新:我的泡菜功能定义在模块的顶层。虽然它调用包含嵌套函数的函数。即f()要求g()调用h()具有嵌套函数i(),和我打电话pool.apply_async(f)。f(),g(),h()都在顶层定义。我用这种模式尝试了更简单的示例,尽管它可以工作。

2
使用pickle.dump-TypeError:必须为str,而不是字节
我正在使用python3.3,并且在尝试腌制一个简单的字典时遇到一个神秘的错误。 这是代码: import os import pickle from pickle import * os.chdir('c:/Python26/progfiles/') def storvars(vdict): f = open('varstor.txt','w') pickle.dump(vdict,f,) f.close() return mydict = {'name':'john','gender':'male','age':'45'} storvars(mydict) 我得到: Traceback (most recent call last): File "C:/Python26/test18.py", line 31, in &lt;module&gt; storvars(mydict) File "C:/Python26/test18.py", line 14, in storvars pickle.dump(vdict,f,) TypeError: must be str, not bytes


12
使用多重处理Pool.map()时无法腌制<type'instancemethod'>
我正在尝试使用multiprocessing的Pool.map()功能同时划分工作。当我使用以下代码时,它可以正常工作: import multiprocessing def f(x): return x*x def go(): pool = multiprocessing.Pool(processes=4) print pool.map(f, range(10)) if __name__== '__main__' : go() 但是,当我以更加面向对象的方式使用它时,它将无法正常工作。它给出的错误信息是: PicklingError: Can't pickle &lt;type 'instancemethod'&gt;: attribute lookup __builtin__.instancemethod failed 当以下是我的主程序时,会发生这种情况: import someClass if __name__== '__main__' : sc = someClass.someClass() sc.go() 这是我的someClass课: import multiprocessing class someClass(object): def __init__(self): pass def …

9
存储Python字典
我习惯于使用.csv文件将数据导入和导出Python,但这存在明显的挑战。关于将字典(或字典集)存储在json或pck文件中的简单方法的任何建议?例如: data = {} data ['key1'] = "keyinfo" data ['key2'] = "keyinfo2" 我想知道如何保存它,然后再将其加载回去。
197 python  json  dictionary  save  pickle 

10
将类实例序列化为JSON
我正在尝试创建类实例的JSON字符串表示形式并且遇到困难。假设该类的构建如下: class testclass: value1 = "a" value2 = "b" 像这样对json.dumps进行调用: t = testclass() json.dumps(t) 失败了,并告诉我testclass不可JSON序列化。 TypeError: &lt;__main__.testclass object at 0x000000000227A400&gt; is not JSON serializable 我也尝试过使用pickle模块: t = testclass() print(pickle.dumps(t, pickle.HIGHEST_PROTOCOL)) 它提供类实例信息,但不提供类实例的序列化内容。 b'\x80\x03c__main__\ntestclass\nq\x00)\x81q\x01}q\x02b.' 我究竟做错了什么?

18
多重处理:如何在类中定义的函数上使用Pool.map?
当我运行类似: from multiprocessing import Pool p = Pool(5) def f(x): return x*x p.map(f, [1,2,3]) 它工作正常。但是,将其作为类的函数: class calculate(object): def run(self): def f(x): return x*x p = Pool() return p.map(f, [1,2,3]) cl = calculate() print cl.run() 给我以下错误: Exception in thread Thread-1: Traceback (most recent call last): File "/sw/lib/python2.6/threading.py", line 532, in __bootstrap_inner …

7
Python 2和3之间的numpy数组的Pickle不兼容
我正在尝试使用此程序加载在Python 3.2中链接到此处的MNIST数据集: import pickle import gzip import numpy with gzip.open('mnist.pkl.gz', 'rb') as f: l = list(pickle.load(f)) print(l) 不幸的是,它给了我错误: Traceback (most recent call last): File "mnist.py", line 7, in &lt;module&gt; train_set, valid_set, test_set = pickle.load(f) UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not in range(128) 然后,我尝试在Python 2.7中解码腌制的文件,然后重新编码。因此,我在Python …


2
用python 3解开python 2对象
我想知道是否有一种方法可以加载在Python 2.4和Python 3.4中腌制的对象。 我一直在大量公司遗留代码上运行2to3,以使其保持最新状态。 完成此操作后,在运行文件时出现以下错误: File "H:\fixers - 3.4\addressfixer - 3.4\trunk\lib\address\address_generic.py" , line 382, in read_ref_files d = pickle.load(open(mshelffile, 'rb')) UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 1: ordinal not in range(128) 在争用中查看腌制的对象,它dict在中dict,包含键和type值str。 所以我的问题是:有没有办法用python 3.4加载最初在python 2.4中腌制的对象?

6
在磁盘上保留numpy数组的最佳方法
我正在寻找一种保留大型numpy数组的快速方法。我想将它们以二进制格式保存到磁盘中,然后相对快速地将它们读回到内存中。不幸的是,cPickle不够快。 我找到了numpy.savez和numpy.load。但是奇怪的是,numpy.load将一个npy文件加载到“内存映射”中。这意味着对数组的常规操作确实很慢。例如,像这样的事情真的很慢: #!/usr/bin/python import numpy as np; import time; from tempfile import TemporaryFile n = 10000000; a = np.arange(n) b = np.arange(n) * 10 c = np.arange(n) * -0.5 file = TemporaryFile() np.savez(file,a = a, b = b, c = c); file.seek(0) t = time.time() z = np.load(file) print "loading …

7
泡菜还是json?
我需要将一个dict密钥为type str且值为ints 的小对象保存到磁盘,然后将其恢复。像这样: {'juanjo': 2, 'pedro':99, 'other': 333} 最佳选择是什么,为什么?使用pickle或使用序列化它simplejson? 我正在使用Python 2.6。
114 python  json  pickle 

7
保存和加载对象以及使用泡菜
我正在尝试使用pickle模块保存和加载对象。 首先,我声明我的对象: &gt;&gt;&gt; class Fruits:pass ... &gt;&gt;&gt; banana = Fruits() &gt;&gt;&gt; banana.color = 'yellow' &gt;&gt;&gt; banana.value = 30 之后,我打开一个名为“ Fruits.obj”的文件(以前,我创建了一个新的.txt文件,并将其重命名为“ Fruits.obj”): &gt;&gt;&gt; import pickle &gt;&gt;&gt; filehandler = open(b"Fruits.obj","wb") &gt;&gt;&gt; pickle.dump(banana,filehandler) 完成此操作后,我关闭了会话,开始了一个新会话,然后放入下一个会话(尝试访问应该保存的对象): file = open("Fruits.obj",'r') object_file = pickle.load(file) 但是我有这个信息: Traceback (most recent call last): File "&lt;stdin&gt;", line 1, in &lt;module&gt; File …
114 python  object  pickle 

7
为什么在读取一个空文件时出现“ Pickle-EOFError:Ran out of input”的问题?
尝试使用时出现一个有趣的错误Unpickler.load(),这是源代码: open(target, 'a').close() scores = {}; with open(target, "rb") as file: unpickler = pickle.Unpickler(file); scores = unpickler.load(); if not isinstance(scores, dict): scores = {}; 这是回溯: Traceback (most recent call last): File "G:\python\pendu\user_test.py", line 3, in &lt;module&gt;: save_user_points("Magix", 30); File "G:\python\pendu\user.py", line 22, in save_user_points: scores = unpickler.load(); EOFError: Ran out …
109 python  file  pickle 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.