python 3替换dircache?

时间:2015-09-17 04:29:14

标签: python python-2.7 python-3.x

在我重新发明轮子之前,任何人都可以告诉我是否有单线声明的替代(或半插入)替换:

allfiles = dircache.listdir('.')

2 个答案:

答案 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中发出的警告也适用于此:当修改日期更改时,不会重新读取目录,因此如果从目录中添加或删除文件,以后的调用将是不正确的。