Mar*_*cin 6 python caching file
我正在从文件创建一些对象(模板xsd文件中的验证器,以及其他xsd文件一起绘制),并且我想在磁盘上的文件发生更改时重新创建对象.
我可以创建类似的东西:
def getobj(fname, cache = {}):
try:
obj, lastloaded = cache[fname]
if lastloaded < last_time_written(fname):
# same stuff as in except clause
except KeyError:
obj = create_from_file(fname)
cache[fname] = (obj, currenttime)
return obj
Run Code Online (Sandbox Code Playgroud)
但是,如果存在,我宁愿使用其他人测试过的代码.是否有现有的库可以执行此类操作?
更新:我正在使用python 2.7.1.
您的代码(包括缓存逻辑)看起来不错。
考虑将缓存变量移到函数定义之外。这将使添加其他功能来清除或检查缓存成为可能。
如果您想查看执行类似操作的代码,请查看filecmp模块的源代码: http://hg.python.org/cpython/file/2.7/Lib/filecmp.py 有趣的部分是stat 模块如何用于确定文件是否已更改。这是签名函数:
def _sig(st):
return (stat.S_IFMT(st.st_mode),
st.st_size,
st.st_mtime)
Run Code Online (Sandbox Code Playgroud)