Mik*_*ike 10 python autosave class
som = SOM_CLASS() # includes many big difficult data structures
som.hard_work()
som.save_to_disk(filename)
#then later or another program
som = SOM_CLASS()
som.read_from_file(filename)
som.do_anythink_else()
Run Code Online (Sandbox Code Playgroud)
要么
som = SOM_CLASS()
save(som)
#...
load(som)
som.work()
Run Code Online (Sandbox Code Playgroud)
最简单的方法是什么?
And*_*Dog 15
你可以(de)序列化pickle.它是向后兼容的,即它将支持未来版本中的所有旧协议.
import pickle
som = SOM_CLASS()
fileObject = <any file-like object>
pickle.dump(som, fileObject)
#...
som = pickle.load(fileObject)
som.work()
Run Code Online (Sandbox Code Playgroud)
但请注意,如果您将腌制对象转移到另一台计算机,请确保连接不会被篡改,因为pickle可能不安全(这是每个pickle用户应该知道的文章).
另一种选择是较旧的模块编组.
我使用这个代码:
import cPickle
import traceback
class someClass():
def __init__(self):
#set name from variable name. http://stackoverflow.com/questions/1690400/getting-an-instance-name-inside-class-init
(filename,line_number,function_name,text)=traceback.extract_stack()[-2]
def_name = text[:text.find('=')].strip()
self.name = def_name
try:
self.load()
except:
##############
#to demonstrate
self.someAttribute = 'bla'
self.someAttribute2 = ['more']
##############
self.save()
def save(self):
"""save class as self.name.txt"""
file = open(self.name+'.txt','w')
file.write(cPickle.dumps(self.__dict__))
file.close()
def load(self):
"""try load self.name.txt"""
file = open(self.name+'.txt','r')
dataPickle = file.read()
file.close()
self.__dict__ = cPickle.loads(dataPickle)
Run Code Online (Sandbox Code Playgroud)
此代码从其实际类实例名称保存和加载类。代码来自我的博客http://www.schurpf.com/python-save-a-class/。
| 归档时间: |
|
| 查看次数: |
23685 次 |
| 最近记录: |