python 查找指定内容的txt文件

python

程序设计思路: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\')

 

以上是 python 查找指定内容的txt文件 的全部内容, 来源链接: utcz.com/z/388833.html

回到顶部