我正在尝试在不同的脚本之间共享一个布尔值。在一个脚本中,如果调用了某个函数,我想编辑布尔值。在其他脚本中,我想使用布尔值。我想用腌制法,但我有点糊涂了。我不知道在我的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'
{{cd2>只需要一个
试试这样的方法:
pickle.dump(boolean, open("filename.pkl", "w"))
和
boolean = pickle.load(open("filename.pkl", "r"))
你用错了API。您使用的}与file对象一起使用。您应该先打开文件对象。在
dumps
和loads
方法用于字符串,而不是文件。(名称中的s
代表string
)。根据documentation,您应该将dump
和{首先,您需要使用
pickle.dump(...)
和pickle.load()
,而不是字符串版本,像这样其次,如果再次打开该文件以读取它,则需要将模式设置为
"r"
,否则将销毁它。在相关问题 更多 >
编程相关推荐