临时货架?
我正在设计一个具有撤消/重做功能的类,并且必须临时存储大量数据。我正在通过重载del运算符来实现一个“临时”文件,以便在类被垃圾收集时删除文件,但我不得不相信有更好的方法来执行此操作。我已经尝试使用tempfile模块,但它不起作用,因为shelve模块需要一个名称,而不是文件对象(grr)。
无论如何,想知道是否有人有更好的方法来做到这一点。代码的重要部分如下。
import os, shelve
from time import time
class DataHandlerUser(DataHandler):
def __init__(self, data):
# storing items
self.__unredofilename = os.path.dirname(__file__) + '/.undoredo' + str(time()) + '.pyworkbooks'
try:
os.remove(self.__unredofilename)
except OSError: pass
self._undoredoBuffer = shelve.open(self.__unredofilename)
# ... rest of init
def __del__(self):
# simple check to make sure not tampered with
if '.undoredo' not in self.__unredofilename or '.pyworkbooks' not in self.__unredofilename:
raise Exception('Critical Error: Internal filename for undo/redo operations tampered with')
try:
os.remove(self.__unredofilename)
except OSError: pass
没有找到相关结果
已邀请:
2 个回复
澜悍景哭苟
怪酞撩匹
创建一个临时文件,并在其中放置一个空的bsddb(或您喜欢的任何内容),然后将该文件名传递给搁置