本篇内容主要讲解“怎么用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写一个简单的文件查找程序”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/220136.html