溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么用python寫一個簡單的文件查找程序

發(fā)布時間:2021-12-18 14:32:25 來源:億速云 閱讀:520 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“怎么用python寫一個簡單的文件查找程序”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么用python寫一個簡單的文件查找程序”吧!

在動手寫代碼前,我們先要分析問題,我對文件搜索有如下要求:

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

2、 我可以指定關(guān)鍵字,程序查找指定目錄里的包含這個關(guān)鍵字的文件名稱

3、 我可以指定文件后綴名,程序查找指定目錄里符合這個后綴的文件名稱

4、 如果同時指定了關(guān)鍵字和后綴,則取他們搜索結(jié)果的交集

好了,想清楚目標(biāo)后,我們可以動手了。

首先,得解決文件查找問題,怎么才能獲取一個目錄下所有的文件名稱呢?非常幸運的是os模塊提供了一個名為walk的方法,可以做到這一點。具體使用方法,大家可以百度,關(guān)鍵詞:python os.walk 。

當(dāng)關(guān)鍵字和后綴名都指定的時候,需要取他們的交集,我們可以使用set來分別存儲符合關(guān)鍵字和后綴名的結(jié)果,然后求交集。

存在只指定關(guān)鍵字而不指定后綴名的情況,反之也是可能的,但是都不指定是不允許的,這就要求程序能夠靈活應(yīng)對這種參數(shù)變化的情況,因此,我們用可變參數(shù)來解決。

經(jīng)過了前面的分析,代碼就簡單了

#coding=utf-8
import os
def find_file(path,**kwargs):
   if not 'key' in kwargs and not 'suffix' in kwargs:
       print u'請指定關(guān)鍵詞或者后綴'
       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寫一個簡單的文件查找程序”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI