python檢索特定內容的文本文件2

修改過的,得到的文件夾名,並不是完整路徑,

使用os.path.isfile和os.path.isdir函數時,需要絕對路徑,否則無論是不是文件或者目錄都會返回false。

代碼如下:

# coding=utf-8 
import os 
import sys 

# 找到當前目錄下的所有文本文件 


def findFile(path): 
    f = [] 
    d = [] 
    l = os.listdir(path) 
    os.chdir(path) 
    for x in l: 
        if os.path.isfile(os.path.join(os.getcwd() + "\\", x)): 
            f.append(x) 
        else: 
            d.append(x) 
    return f, d  # 返回文件和目錄的列表 
# print x, "\n", y 

# 統計一個文本內字符串的個數 


def findstrCount(file, strToFind): 
    count = 0 
    thefile = open(file, 'rb') 
    while True: 
        buffer = thefile.read() 
        if not buffer: 
            break 
        count += buffer.count(strToFind) 
    thefile.close() 
    return count 

# 遍歷文件列表中,包含特定字符串的文件 


def findstr(file, str): 
    # f = open(file, "r+") 
    # if f.read().find(str) != -1: 
    #     s = os.getcwd() + "\\" + file 
    # else: 
    #     s = "None" 
    # f.close() 
    LineNum = 1 
    global s 

    for line in open(file): 

        # return is index of the start position. 
        if line.find(str) != -1: 
            s = "%s\\%s------>line:%d" % (os.getcwd(), file, LineNum) 
            print s 
        LineNum = LineNum + 1 
    return s 

L = []  # 全局變量,存放找到的目標文件 


def find(p, str): 
    try: 
        f, d = findFile(p) 
        for x in f: 
            Ret = findstr(x, str) 
            if Ret: 
                L.append(Ret) 
        if d: 
            for x in d: 
                try: 
                    os.chdir(x) 
                    find("./", str) 
                    os.chdir('../') 
                except Exception, e: 
                    print e 
    finally: 
        pass 

if __name__ == '__main__': 
    s = 0 
    find(sys.argv[1], sys.argv[2])


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章