• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Williamzon
https://docs.python.org/2/library/index.html
博客园    首页    新随笔    联系   管理    订阅  订阅

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')

 

posted @ 2015-09-01 11:13  Williamzon  阅读(13141)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3