在我重新发明轮子之前,任何人都可以告诉我是否有单线声明的替代(或半插入)替换:
allfiles = dircache.listdir('.')
答案 0 :(得分:0)
一行?不,但你可以这样做:
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
答案 1 :(得分:0)
您可以使用functools.lru_cache
:
@lru_cache(32)
def cached_listdir(d):
return os.listdir(d)
这不是一个完全相同的替代品。 Dschoni在comment on viraptors answer中发出的警告也适用于此:当修改日期更改时,不会重新读取目录,因此如果从目录中添加或删除文件,以后的调用将是不正确的。