Python Cookbook-2.18 从指定的搜索路径寻找文件

任务

给定一个搜索路径(一个描述目录信息的字符串),需要根据这个路径和请求的文件名找到第一个符合要求的文件。

解决方案

需要循环指定的搜索路径中的目录:

import os
def search_file(filename,search path,pathsep=os.pathsep):
"""给定一个搜索路径,根据请求的名字找到文件"""
	for path in search_path.split(pathsep):
		candidate = os.path.join(path,filename)
		if os.path.isfile(candidate):
			return os.path.abspath(candidate)
	return None
if __name__ == '__main__':
	search_path = '/bin' + os.pathsep + '/usr/bin'#;on Windows,:on UNIX
	find_file = search_file('ls',search_path)
	if find_file:
		print "File 'ls' found at %s" % find_file
	else:
		print "File 'ls' not found"

讨论

本节的任务是个很常见的需求,Python 对这个需求的解决办法也极其简单。本章其他一些节也会处理相似或相关的一些任务:见第2.20节,在Python自身的搜索路径中找文件,以及第 2.19节,在指定的搜索路径中根据匹配模式寻找文件。进行搜索的循环可以被写成很多形式,但一旦找到就立刻返回路径(这里用绝对路径主要基于统一性和方便性的考虑)是最简单的,而且速度很快。在循环完成之后显式地return None并不是必须的,因为在Python中一个函数执行完毕后会自行返回None。在这里画蛇添足的加一句retun语句,仅仅是为了让人能够一目了然地看清search_file的所做的事情。

你可能感兴趣的:(#Python学习,python,开发语言)