編寫一個程式,能在目前的目錄以及目前的目錄的所有子目錄下尋找檔案名稱包含指定字串的檔案,並列印出絕對路徑。
import osclass SearchFile(object): def __init__(self,path='.'): self._path=path self.abspath=os.path.abspath(self._path) # 預設目前的目錄 def findfile(self,keyword,root): filelist=[] for root,dirs,files in os.walk(root): for name in files: fitfile=filelist.append(os.path.join(root, name)) #print(fitfile) print(os.path.join(root, name)) #print(filelist) print('...........................................') for i in filelist: if os.path.isfile(i): #print(i) if keyword in os.path.split(i)[1]: print('yes!',i) # 絕對路徑 #else: #print('......no keyword!') def __call__(self): while True: workpath=input('Do you want to work under the current folder? Y/N:') if(workpath == ''): break if workpath=='y' or workpath=='Y': root=self.abspath # 把當前工作目錄作為工作目錄 print('當前工作目錄:',root) dirlist=os.listdir() # 列出工作目錄下的檔案和目錄 print(dirlist) else: root=input('please enter the working directory:') print('當前工作目錄:',root) keyword=input('the keyword you want to find:') if(keyword==''): break self.findfile(keyword,root) # 尋找帶指定字元的檔案if __name__ == '__main__': search = SearchFile() search()
運行結果:
注意:在啟動並執行時候如果選擇y,也就是把.py檔案所在的目錄作為工作目錄,此時最好不要把.py檔案放到案頭上,因為會遍曆案頭上的所有目錄及目錄下的所有檔案,會很大。