怎么用python写一个简单的文件查找程序

本篇内容主要讲解“怎么用python写一个简单的文件查找程序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用python写一个简单的文件查找程序”吧!

在动手写代码前,我们先要分析问题,我对文件搜索有如下要求:

1、 我可以指定要搜索的文件目录

2、 我可以指定关键字,程序查找指定目录里的包含这个关键字的文件名称

3、 我可以指定文件后缀名,程序查找指定目录里符合这个后缀的文件名称

4、 如果同时指定了关键字和后缀,则取他们搜索结果的交集

好了,想清楚目标后,我们可以动手了。

首先,得解决文件查找问题,怎么才能获取一个目录下所有的文件名称呢?非常幸运的是os模块提供了一个名为walk的方法,可以做到这一点。具体使用方法,大家可以百度,关键词:python os.walk 。

当关键字和后缀名都指定的时候,需要取他们的交集,我们可以使用set来分别存储符合关键字和后缀名的结果,然后求交集。

存在只指定关键字而不指定后缀名的情况,反之也是可能的,但是都不指定是不允许的,这就要求程序能够灵活应对这种参数变化的情况,因此,我们用可变参数来解决。

经过了前面的分析,代码就简单了

#coding=utf-8
import os
def find_file(path,**kwargs):
   if not 'key' in kwargs and not 'suffix' in kwargs:
       print u'请指定关键词或者后缀'
       return
   key = kwargs.get('key',None)
   suffix = kwargs.get('suffix',None)

   file_lst = []

   for parent,dirnames,filenames in os.walk(path):
       for filename in filenames:
           filepath = os.path.join(parent,filename)
           file_lst.append(filepath)

   suffix_set = set()
   key_set = set()
   for filepath in file_lst:
       name = os.path.split(filepath)[1]
       if not suffix == None and name.endswith(suffix):
           suffix_set.add(filepath)
       if not key == None and not -1 == name.find(key):
           key_set.add(filepath)

   if suffix and key:
       res_set = suffix_set.intersection(key_set)
   elif suffix:
       res_set = suffix_set
   else:
       res_set = key_set

   return list(res_set)

if __name__ == '__main__':
   file_list = find_file('/Users/kwsy/PycharmProjects/Dream',key='lead',suffix='.py')
   for name in file_list:
       print name

到此,相信大家对“怎么用python写一个简单的文件查找程序”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!