相关疑难解决方法(0)

如何使用泡菜来保存字典?

我查看了Python文档提供的信息,但我仍然有点困惑.有人可以发布编写新文件的示例代码,然后使用pickle将字典转储到其中吗?

python dictionary pickle

304
推荐指数
7
解决办法
33万
查看次数

保存和加载对象并使用pickle

我正在尝试使用pickle模块保存和加载对象.
首先,我声明我的对象:

>>> class Fruits:pass
...
>>> banana = Fruits()

>>> banana.color = 'yellow'
>>> banana.value = 30
Run Code Online (Sandbox Code Playgroud)

之后我打开一个名为'Fruits.obj'的文件(之前我创建了一个新的.txt文件,我重命名为'Fruits.obj'):

>>> import pickle
>>> filehandler = open(b"Fruits.obj","wb")
>>> pickle.dump(banana,filehandler)
Run Code Online (Sandbox Code Playgroud)

执行此操作后,我关闭了会话,然后我开始了一个新的会话,然后我将下一个(尝试访问它应该保存的对象):

file = open("Fruits.obj",'r')
object_file = pickle.load(file)
Run Code Online (Sandbox Code Playgroud)

但我有这样的信息:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python31\lib\pickle.py", line 1365, in load
encoding=encoding, errors=errors).load()
ValueError: read() from the underlying stream did notreturn bytes
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么办,因为我不明白这个消息.有谁知道如何加载我的对象'香蕉'?谢谢!

编辑: 因为你们有些人已经吮吸我放:

>>> import pickle
>>> file = open("Fruits.obj",'rb')
Run Code Online (Sandbox Code Playgroud)

没有问题,但我接下来的是:

>>> object_file = …
Run Code Online (Sandbox Code Playgroud)

python object pickle

91
推荐指数
5
解决办法
25万
查看次数

在pickle文件中保存和加载多个对象?

我有一个课程,为游戏中的玩家提供服务,创建他们和其他东西.

我需要将这些播放器对象保存在文件中以便以后使用.我尝试了pickle模块,但我不知道如何保存多个对象并再次加载它们?有没有办法做到这一点,或者我应该使用其他类,如列表,并保存和加载我的对象列表?

有没有更好的办法?

python class object pickle python-3.x

55
推荐指数
5
解决办法
7万
查看次数

python 3中的pickle和_pickle有什么区别?

我是python的新手,想要实现快速对象序列化.我试图使用json,但它太慢了,也试图使用马歇尔模块,但是由马歇尔序列化的对象大小比pickle多6-7倍,所以我决定在我的项目中使用pickle.我读了一下cPickle模块,读得很快,但python 3中没有这样的模块,docs说名为_pickle的模块是用C语言编写的.所以在我的项目中我使用

import _pickle as pickle
Run Code Online (Sandbox Code Playgroud)

pickle和_pickle之间有什么区别吗?我如何实现更快的对象序列化/反序列化?

python serialization python-3.x

29
推荐指数
2
解决办法
1万
查看次数

pickle - 在文件中放入多个对象?

我有一个方法可以将一些pickle对象(实际上是元组)转储到一个文件中.

我不想把它们放在一个列表中,我真的想多次转储到同一个文件中.我的问题是,如何再次加载对象?第一个和第二个对象只有一行,所以这适用于readlines.但所有其他人都更长.自然,如果我尝试

myob = cpickle.load(g1.readlines()[2])
Run Code Online (Sandbox Code Playgroud)

其中g1是文件,我得到一个EOF错误,因为我的pickle对象长于一行.有没有办法得到我的腌制物?

python file pickle

24
推荐指数
3
解决办法
4万
查看次数

腌制图像对象?

我是一个完全的泡菜新手,我有一堆(约100,000)图像需要被腌制。

它们首先作为图像对象加载,然后转换为数据,如下所示:

image = {
    'pixels': im.tostring(),
    'size': im.size,
    'mode': im.mode,
}
Run Code Online (Sandbox Code Playgroud)

现在如何将它们腌制到一个pkl文件中?

python pickle

4
推荐指数
1
解决办法
1万
查看次数

使用pickle加载课程状态

我试图用咸菜弄湿我的脚,所以我写了一些这样的示例代码:

class start(tk.Frame):
    def __init__(self,*args,**kwargs):
        tk.Frame.__init__(self,*args,**kwargs)
        frame = tk.Frame(self,width=600,height=600)
        self.val = 0
        self.plusButton = tk.Button(self,text="plus",command=self.plus)
        self.plusButton.pack()
        self.valLabel = tk.Label(self)
        self.valLabel.pack()
        self.saveButton = tk.Button(self,text="save",command=self.save)
        self.saveButton.pack()
        self.loadButton = tk.Button(self,text="load",command=self.load)
        self.loadButton.pack()
    def load(self):
        self.__dict__ = pickle.load(open( "testtesttest.p", "rb" ))
    def plus(self):
        self.val += 1 
        self.valLabel.config(text="%d"%(self.val))
    def save(self):
        pickle.dump(self.__getstate__, open( "testtesttest.p", "wb" ))

    def __getstate__(self):
        return self.__getstate__


if __name__=='__main__':
   root = tk.Tk()

   start(root).pack()
   root.mainloop()
Run Code Online (Sandbox Code Playgroud)

因此,此应用程序的目标是一旦我按下加号按钮,屏幕上的数字就会越来越多。如果我保存它,请关闭窗口,重新打开它,然后单击“加载”按钮,我将看到上次增加该数字的时间。我对pickle还是很陌生,当前代码将其反馈给我:

    Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/tkinter/__init__.py", line 1550, in __call__return self.func(*args)
File "/Users/caoanjie/pickleDemotry.py", line …
Run Code Online (Sandbox Code Playgroud)

python tkinter pickle

1
推荐指数
1
解决办法
1259
查看次数

如何将列表的内容保存到文件?

我对我的代码有一些疑问:

def entry_book():
    book = ["autor", "ime", "godina", "ISNB", "zanr", "cena", "broj"]
    print ("Podaci za knjigu:")
    book[0] = input ("Autor: ")
    book[1] = input ("Naslov: ")
    book[2] = input ("Godina: ")
    book[3] = input ("ISNB: ")
    book[4] = input ("Zanr: ")
    book[5] = input ("Cena: ")
    book[6] = input ("Kolicina: ")
    record= "{}|{}|{}|{}|{}|{}|{}".format (book[0], book[1], book[2], book[3],
                                           book[4], book[5], book[6])

    print (book)
    print (record)
    f = open('books.txt','w')
    f.write (record)
    f.close()
    f = open("books.txt")
    x = f.read()
    f.close()
    print (x)
    record1 …
Run Code Online (Sandbox Code Playgroud)

python list

1
推荐指数
1
解决办法
97
查看次数

标签 统计

python ×8

pickle ×6

object ×2

python-3.x ×2

class ×1

dictionary ×1

file ×1

list ×1

serialization ×1

tkinter ×1