mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 10:53:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			31 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from pathlib import Path
 | |
| 
 | |
| 
 | |
| def search_file_upwards(
 | |
|     base_dir_path: Path,
 | |
|     target_file_name: str,
 | |
|     max_search_parent_depth: int,
 | |
| ) -> Path:
 | |
|     """
 | |
|     Find a target file in the current directory or its parent directories up to a specified depth.
 | |
|     :param base_dir_path: Starting directory path to search from.
 | |
|     :param target_file_name: Name of the file to search for.
 | |
|     :param max_search_parent_depth: Maximum number of parent directories to search upwards.
 | |
|     :return: Path of the file if found, otherwise None.
 | |
|     """
 | |
|     current_path = base_dir_path.resolve()
 | |
|     for _ in range(max_search_parent_depth):
 | |
|         candidate_path = current_path / target_file_name
 | |
|         if candidate_path.is_file():
 | |
|             return candidate_path
 | |
|         parent_path = current_path.parent
 | |
|         if parent_path == current_path:  # reached the root directory
 | |
|             break
 | |
|         else:
 | |
|             current_path = parent_path
 | |
| 
 | |
|     raise ValueError(
 | |
|         f"File '{target_file_name}' not found in the directory '{base_dir_path.resolve()}' or its parent directories"
 | |
|         f" in depth of {max_search_parent_depth}."
 | |
|     )
 | 
