##language:zh ''' 文章来自《Python cookbook》. 翻译仅仅是为了个人学习,其它商业版权纠纷与此无关! ''' -- 218.25.66.198 [<>] <> = 描述 = Finding a File Given an Arbitrary Search Path 在任意的搜索路径(集合)下,查找文件 Credit: Chui Tey == 问题 Problem == Given a search path (a string of directories with a separator in between), you need to find the first file along the path whose name is as requested. 给定搜索路径(分隔符分开的欲搜索路径组成的字符串),查找第一个名称符合的文件。 == 解决 Solution == Basically, you need to loop over the directories in the given search path: 一般来说,需要在给定的搜索路径集合上循环: {{{ #!python import os, string def search_file(filename, search_path, pathsep=os.pathsep): """ Given a search path, find file with requested name """ for path in string.split(search_path, pathsep): candidate = os.path.join(path, filename) if os.path.exists(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 found at %s" % find_file else: print "File not found" }}} == 讨论 Discussion == This is a reasonably frequent task, and Python makes it extremely easy. The search loop can be coded in many ways, but returning the normalized path as soon as a hit is found is simplest as well as fast. The explicit return None after the loop is not strictly needed, since None is what Python returns when a function falls off the end, but having the return explicit in this case makes the functionality of search_file much clearer at first sight. 这是一个很常见的任务,使用Python处理变得特简单。 循环语句可以采用很多风格实现,但是最简单又快速的方法是:发现一个符合条件文件立即返回它的规范化的路径。脚本中循环后面明确返回的None不是严格必需的,Python中函数没有返回值,默认返回一个None。不过,这里明确返回'''None''',使得代码(查找的)功能一眼就可以看得更清楚些。 To find files specifically on Python's own search path, see Recipe 4.22. 在Python的运行时搜索路径上查找文件,参见食谱 4.22 http://wiki.woodpecker.org.cn/moin.cgi/PyCkBk_2d4_2d22 == 参考 See Also == 食谱4.22 http://wiki.woodpecker.org.cn/moin.cgi/PyCkBk_2d4_2d22; Python 文档os模块部分