心血来潮写了个小工具,可以查找并保存txt文本中指定文字所在行及上下文,超出的部分不会显示,上下文行数可以更改。如果没有查到会直接显示查找完成,生成的保存文档里也什么没有。
主要使用python的file方法实现。
代码如下:
#encoding utf-8
fo = open('E:\\txtseeker\\test.txt','r',encoding='UTF-8') #打开目标文件
fw = open('E:\\txtseeker\\testw.txt','w',encoding='UTF-8') #新建文件保存结果
line = fo.readlines()
cnt = 0
for i in line:
if 'd' in i:
if 2<cnt+1<=len(line):
# 打印目标行及上下两行的文字
print("原文件行号:",cnt+1)
print(line[cnt-2])
print(line[cnt-1])
print(line[cnt])
# 把查找结果写到新文件里
fw.write("原文件行号:" + str(cnt + 1) + '\n')
fw.write(line[cnt - 2])
fw.write(line[cnt - 1])
fw.write(line[cnt])
if cnt+2 < len(line):
print(line[cnt+1])
print(line[cnt+2])
fw.write(line[cnt + 1])
fw.write(line[cnt + 2])
elif cnt+2 == len(line):
print(line[cnt+1])
fw.write(line[cnt + 1])
elif cnt == 0:
print("原文件行号:", cnt + 1)
fw.write("原文件行号:" + str(cnt + 1) + '\n')
print(line[cnt])
fw.write(line[cnt])
elif cnt == 1:
print("原文件行号:", cnt + 1)
fw.write("原文件行号:" + str(cnt + 1) + '\n')
print(line[cnt - 1])
print(line[cnt])
fw.write(line[cnt - 1])
fw.write(line[cnt])
elif cnt == 2:
print("原文件行号:", cnt + 1)
fw.write("原文件行号:" + str(cnt + 1) + '\n')
print(line[cnt - 2])
print(line[cnt - 1])
print(line[cnt])
fw.write(line[cnt - 2])
fw.write(line[cnt - 1])
fw.write(line[cnt])
cnt = cnt + 1
else:
print("查找完成")
fo.close()
fw.close()