查找文件中字符串很简单,主要是遍历文件夹中所有的文件。
遍历文件目录主要用的 os 模块,主要代码如下:
# -*- coding: cp936 -*- #在目录下查询文件中存在的字符串 import os class SearchWordFromFiles: path = '' #路径 word = '' #要搜索的word关键字 wlength = 0 #word关键字长度 start = 0 #当前行开始位置 lineNum = 0 #当前遍历的行号 #查询,路径,字符串 def search(self, path, word): self.path = path self.word = word self.wlength = len(word) self.getFiles(path) #遍历目录下所有文件 def getFiles(self, path): dirs = os.listdir(path) # 列出该目录下所有文件列表 for d in dirs: subpath = os.path.join(path, d) #遍历并判断文件or文件夹 if os.path.isfile(subpath): self.readFile(subpath) #如果为文件直接查询 else: self.getFiles(subpath) #如果为文件夹遍历继续遍历文件 #查询文件中是否存在字符串 def readFile(self, fileName): print 'begin read file:' + fileName f = open(fileName, 'r') #打开文件 self.lineNum = 1 #记录行数 while True: line = f.readline() #读取当前行 if not line: #如果读取文件则结束则退出 break #index = line.find(self.word) #查询当前行是否存在字符 #if(index != -1): #print '第【' + str(i) + '】行,第【' + str(index) + '】个字符' self.start = 0 self.searchFromText(line, self.word) self.lineNum = self.lineNum + 1 f.close() #关闭文件 print 'read over file:' + fileName print '------------------------' #从text中查找word def searchFromText(self, text, word): tlength = len(text) index = text.find(word) if index != -1: print '第【 '+ str(self.lineNum) +' 】行,第【' + str(self.start + index) + '】个字符' self.start = index + self.wlength self.searchFromText(text[self.start:tlength], word) ######################################## #调用 path = 'E:\\tuina\\assets\\www\\app' words = 'pp' swff = SearchWordFromFiles() swff.search(path, words)