#! /usr/bin/env python3
# -*- coding: utf-8 -*-
#编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径
#将本文件放到该目录下,才可使用
import os
class SearchClass(object):
def __init__(self):
self.path='' #相对路径
self.absPath = os.path.abspath('.') #绝对路径
'''
功能:搜索当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件
参数abspath:查找文件的绝对路径
参数father_path:当前操作目录的父目录
思路:利用os.listdir()列出目录和文件L(这里要注意,调用该函数前,需要用os.chdir()工作目录切换到要操作的目录);
然后先输出符合要求的文件;
然后遍历L,找出目录,调用本函数,形成递归调用(要注意工作目录的切换,否则会出错)
'''
def Search(self,abspath = '.',father_path = ''):
os.chdir(abspath) #切换工作目录到abspath指定目录,也就是当前工作目录
L = os.listdir('.') #列出本目录下的文件和文件夹
#print(L)
for v in L:
if os.path.isfile(v) and 'file' in v: #将本目录下的符合条件文件输出
print('%s%s%s' % (self.path,os.sep,v))
for m in L:
#os.chdir(self.absPath)
if os.path.isdir(m): #如果是目录
tmp_path = self.path
self.path = os.path.join(self.path,m) #更新path
self.absPath = os.path.join(self.absPath,m) #更新absPath
#print(self.absPath)
self.Search(self.absPath,tmp_path) #递归调用
os.chdir(abspath) #因为在Search里面会切换目录所以要切换回来
self.absPath = os.path.abspath('..') #在这里要将absPath和path置为当前目录的父目录
self.path = father_path
os.chdir(self.absPath) #切换到上一层目录
#print(self.absPath)
#test
f=SearchClass()
f.Search()
python读取文件名包含某字符的文件_Python 在当前和子目录中查找文件名中包含指定字符串的文件...