mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			35 lines
		
	
	
	
		
			823 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			823 B
		
	
	
	
		
			Python
		
	
	
	
	
	
# Module 'dircache'
 | 
						|
#
 | 
						|
# 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] + '/'
 |