Staging
v0.5.1
https://github.com/python/cpython
Revision 3fecd48bded335cf79851a23c66fd8e8195f9516 authored by Terry Jan Reedy on 25 June 2014, 02:21:36 UTC, committed by Terry Jan Reedy on 25 June 2014, 02:21:36 UTC
fit in the default width of the text window (45 chars).
1 parent 5329681
Raw File
Tip revision: 3fecd48bded335cf79851a23c66fd8e8195f9516 authored by Terry Jan Reedy on 25 June 2014, 02:21:36 UTC
Issue #14117: Inprove help text and docstrings, some for clarity, some just to
Tip revision: 3fecd48
dircache.py
"""Read and cache directory listings.

The listdir() routine returns a sorted list of the files in a directory,
using a cache to avoid reading the directory more often than necessary.
The annotate() routine appends slashes to directories."""
from warnings import warnpy3k
warnpy3k("the dircache module has been removed in Python 3.0", stacklevel=2)
del warnpy3k

import os

__all__ = ["listdir", "opendir", "annotate", "reset"]

cache = {}

def reset():
    """Reset the cache completely."""
    global cache
    cache = {}

def listdir(path):
    """List directory contents, using cache."""
    try:
        cached_mtime, list = cache[path]
        del cache[path]
    except KeyError:
        cached_mtime, list = -1, []
    mtime = os.stat(path).st_mtime
    if mtime != cached_mtime:
        list = os.listdir(path)
        list.sort()
    cache[path] = mtime, list
    return list

opendir = listdir # XXX backward compatibility

def annotate(head, list):
    """Add '/' suffixes to directories."""
    for i in range(len(list)):
        if os.path.isdir(os.path.join(head, list[i])):
            list[i] = list[i] + '/'
back to top