如何在pkl文件中编写write()方法,以便在python scrpits中使用?

2024-04-20 07:06:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在不同的脚本之间共享一个布尔值。在一个脚本中,如果调用了某个函数,我想编辑布尔值。在其他脚本中,我想使用布尔值。我想用腌制法,但我有点糊涂了。我不知道在我的pkl文件里写什么。我的代码是这样的:

在一个.py在

    import pickle

    boolean = False
    pickle.dumps(boolean, "filename.pkl")

    class Foo(object):

    #init method irrelevant

        def bar(self):
            foobar = raw_input("> ")

            if foobar == "baz":
                boolean = True
                pkl_file = open("filename.pkl", 'w')
                pickle.dumps(boolean, "filename.pkl")
            else:
                print "Hello"

在二.py在

^{pr2}$

我有另一个脚本,它的功能类似于二.py. 我的pkl文件为空。
当我尝试运行主脚本(与pickling完全不同)时,我得到“AttributeError:'str'object没有属性'write'


Tags: 文件函数代码pyimport脚本false编辑
3条回答

{{cd2>只需要一个

试试这样的方法:pickle.dump(boolean, open("filename.pkl", "w"))

boolean = pickle.load(open("filename.pkl", "r"))

你用错了API。您使用的dumpsloads方法用于字符串,而不是文件。(名称中的s代表string)。根据documentation,您应该将dump和{}与file对象一起使用。您应该先打开文件对象。在

首先,您需要使用pickle.dump(...)pickle.load(),而不是字符串版本,像这样

import pickle

f = open('gherkin.pkl','w')
pickle.dump(False,f)
f.close()
g = open('gherkin.pkl','r')
print pickle.load(g)
g.close()

其次,如果再次打开该文件以读取它,则需要将模式设置为"r",否则将销毁它。在

相关问题 更多 >