zoukankan      html  css  js  c++  java
  • 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, "
    ", 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])


  • 相关阅读:
    选择
    git使用笔记
    “子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。”SQL查询错误解析
    sql学习笔记
    python爬虫
    线性代数知识点
    centos7 安装git
    感知机——学习笔记
    Logistic Regression学习笔记
    朴素贝叶斯分类--笔记
  • 原文地址:https://www.cnblogs.com/hystill/p/13783207.html
Copyright © 2011-2022 走看看