查找文件中字符串很简单,主要是遍历文件夹中所有的文件。

遍历文件目录主要用的 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)