mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +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] + '/'
 | 
