在我重新发明轮子之前,有没有人能告诉我是否有一个可直接替换(或半直接替换)单行语句的方案?
allfiles = dircache.listdir('.')
allfiles = dircache.listdir('.')
一行?不是的。但你可以只需执行以下操作:
global_cache = {}
def cached_listdir(path):
res = global_cache.get(path)
if res is None:
res = os.listdir(path)
global_cache[path] = res
return res
functools.lru_cache
:@lru_cache(32)
def cached_listdir(d):
return os.listdir(d)
这不是完全相同的替换。Dschoni在 viraptors答案评论中发出的警告也适用于此:当修改日期更改时,目录不会被重新读取,因此如果从目录中添加或删除文件,则后续调用将不正确。