Python实现递归检索指定内容文本文件
本文介绍在Windows环境下使用Python 2.7编写的脚本,用于递归检索指定目录下的文本文件。脚本通过命令行参数接收搜索路径和目标字符串,遍历所有文件并统计包含该字符串的行及位置,最终输出匹配结果。
在Windows操作系统中,使用Python 2.7版本环境。
脚本设计为接收一个命令行参数,该参数指定需要检索的目标字符串。
例如,执行命令 >find.py ./ hello 即可启动检索。
# coding=utf-8
import os
import sys
# 找到当前目录下的所有文本文件
def findFile(path):
f = []
d = []
l = os.listdir(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()
i = 1
global s
for line in open(file):
# return is index of the str start position.
if line.find(str) != -1:
s = os.getcwd() + "\\" + file + "------>line:%d" % (i)
print s
i = i + 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:
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])
以上关于使用Python检索特定内容文本文件的实例介绍完毕,希望能为读者提供参考,并欢迎大家继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









