mirror of
https://github.com/python/cpython.git
synced 2025-10-23 18:03:48 +00:00

1. Comments at the beginning of the module, before functions, and before classes have been turned into docstrings. 2. Tabs are normalized to four spaces. Also, removed the "remove" function from dircmp.py, which reimplements list.remove() (it must have been very old).
35 lines
924 B
Python
35 lines
924 B
Python
"""Return a sorted list of the files in a directory, using a cache
|
|
to avoid reading the directory more often than necessary.
|
|
Also contains a subroutine to append slashes to directories."""
|
|
|
|
import os
|
|
|
|
cache = {}
|
|
|
|
def listdir(path):
|
|
"""List directory contents, using cache."""
|
|
try:
|
|
cached_mtime, list = cache[path]
|
|
del cache[path]
|
|
except KeyError:
|
|
cached_mtime, list = -1, []
|
|
try:
|
|
mtime = os.stat(path)[8]
|
|
except os.error:
|
|
return []
|
|
if mtime <> cached_mtime:
|
|
try:
|
|
list = os.listdir(path)
|
|
except os.error:
|
|
return []
|
|
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] + '/'
|