本篇內容主要講解“怎么用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寫一個簡單的文件查找程序”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。