编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出绝对路径。
import osclass SearchFile(object):def __init__(self,path='.'):self._path=pathself.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 == ''):breakif 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==''): breakself.findfile(keyword,root) # 查找带指定字符的文件if __name__ == '__main__':search = SearchFile()search()
运行结果:
注意:在运行的时候如果选择y,也就是把.py文件所在的目录作为工作目录,此时最好不要把.py文件放到桌面上,因为会遍历桌面上的所有目录及目录下的所有文件,会很大。