python 查找指定内容的txt文件

程序设计思路:1. 利用os.walk()找出所有的文件;2.利用正则找到指定后缀的文件;3.找到需要的txt文件后,通过open().readlines()读取文件中每行数据;4.读取后,保存正则匹配到数据的文件;5.你懂的。
#!/usr/bin/env python
#coding:utf8

import os
import re

regtxt = r'.+?\.txt' #扫描对象为txt文件.
regcontent = r'what is your name' #列出内容含有'what is your name'的文件

class FileException(Exception):
    pass

def getdirlist(filepath):
    """获取目录下所有的文件."""

    txtlist = [] #文件集合.
    txtre = re.compile(regtxt)
    needfile = [] #存放结果.
    for parent, listdir, listfile in os.walk(filepath):
        for files in listfile:
            #获取所有文件.
            istxt = re.findall(txtre, files)
            filecontext = os.path.join(parent, files)
            #获取非空的文件.
            if istxt :
                txtlist.append(filecontext)
                #将所有的数据存放到needfile中.
                needfile.append(readfile(filecontext)) 

    if needfile == []:
        raise FileException("no file can be find!")
    else:
        validatedata = getvalidata(needfile)
        print validatedata
        print 'total file %s , validate file %s.' %(len(txtlist),len(validatedata))

def getvalidata(filelist=[]):
    """过滤集合中空的元素."""

    valifile = []
    for fp in filelist:
        if fp != None:
            valifile.append(fp)
    return valifile

def readfile(filepath):
    """通过正则匹配文本中内容,并返回文本."""

    flag = False
    contentre = re.compile(regcontent)
    fp = open(filepath, 'a+')
    lines = fp.readlines()
    flines = len(lines)
    #逐行匹配数据.
    for i in range(flines): 
        iscontent = re.findall(contentre, lines[i]) 
        if iscontent:
            fp.close()
            return filepath

if __name__ == "__main__":
    getdirlist('C:\python27')

 

转载于:https://www.cnblogs.com/hujianping/p/4775210.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值