mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			36 lines
		
	
	
	
		
			850 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			850 B
		
	
	
	
		
			Python
		
	
	
	
	
	
# Module 'dircache'
 | 
						|
#
 | 
						|
# Return a sorted list of the files in a POSIX directory, using a cache
 | 
						|
# to avoid reading the directory more often than necessary.
 | 
						|
# Also contains a subroutine to append slashes to directories.
 | 
						|
 | 
						|
import posix
 | 
						|
import path
 | 
						|
 | 
						|
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 = posix.stat(path)[8]
 | 
						|
	except posix.error:
 | 
						|
		return []
 | 
						|
	if mtime <> cached_mtime:
 | 
						|
		try:
 | 
						|
			list = posix.listdir(path)
 | 
						|
		except posix.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 path.isdir(path.join(head, list[i])):
 | 
						|
			list[i] = list[i] + '/'
 |