Python 遍历文件夹所有文件并查找文件中的字符串

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

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

 

发表评论