Mercurial > cpython-lru_cache-weakref
view Mac/Lib/maccache.py @ 5817:48b94de85bf3 legacy-trunk
Extensive changes by AMK.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Thu, 17 Jul 1997 16:29:42 +0000 |
| parents | 6163020a967d |
| children |
line wrap: on
line source
# Module 'maccache' # # Maintain a cache of listdir(), isdir(), isfile() or exists() outcomes. # XXX Should merge with module statcache import os # The cache. # Keys are absolute pathnames; # values are 0 (nothing), 1 (file) or [...] (dir). # cache = {} # Current working directory. # cwd = os.getcwd() # Constants. # NONE = 0 FILE = 1 LISTTYPE = type([]) def _stat(name): name = os.path.join(cwd, name) if cache.has_key(name): return cache[name] if os.path.isfile(name): cache[name] = FILE return FILE try: list = os.listdir(name) except: cache[name] = NONE return NONE cache[name] = list if name[-1:] == ':': cache[name[:-1]] = list else: cache[name+':'] = list return list def isdir(name): st = _stat(name) return type(st) == LISTTYPE def isfile(name): st = _stat(name) return st == FILE def exists(name): st = _stat(name) return st <> NONE def listdir(name): st = _stat(name) if type(st) == LISTTYPE: return st else: raise RuntimeError, 'list non-directory'
