主页 > 其他  > 

PythonCookbook-2.19根据指定的搜索路径和模式寻找文件

PythonCookbook-2.19根据指定的搜索路径和模式寻找文件
任务

给定一个搜索路径(一个描述目录信息的字符串),需要在此目录中找出所有符合匹配模式的文件。

解决方案

基本上,需要循环路径中的所有目录。这个循环最好被封装成一个生成器:

import glob,os def all_files(pattern,search_path,pathsep=os.pathsep): '''给定搜索路径,找出所有满足匹配条件的文件''' for path in search_path.split(pathsep): for match in glob.glob(os.path.join(path, pattern)): yield match 讨论

生成器的好处是,可以很容易地获取第一个子项,或者所有子项,再或者其中任意一个子项。比如,打印出你的环境变量 PATH 中第一个符合"*.pye"模式的文件:

print all_files('*.pye',os.environ['PATH']).next( )`

打印所有这种文件,一行一个:

for match in all_files('*.pye',os.environ['PATH']): print match

以列表形式一次全部打印出来:

print list(all_files('*.pye',os.environ['PATH']))

给 all_files函数提供了一个主脚本,以方便打印出的 PATH 中所有符合匹配模式的文件。因此,不仅能够看到根据指定名字将被执行的那个文件(第一个),还能看到被第一个文件“屏蔽”掉的其他同名文件:

if __name__ == '__main__': import sys if len(sys.argv) != 2 or sys.argv[1].startswith('_'): print 'Use: %s <pattern>' % sys.arqv[0] sys.exit(1) matches = list(all_files(sys.argv[1], os.environ['PATH'])) print '%d match:' % len(matches) for match in matches: print match
标签:

PythonCookbook-2.19根据指定的搜索路径和模式寻找文件由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“PythonCookbook-2.19根据指定的搜索路径和模式寻找文件