使用python脚本筛选文件
这里以.csv格式的日志文件为例,使用简单的python脚本进行日志内容筛选和提取。
背景
我要对.csv格式的日子和文件进行分析,找出问题。
.csv可以通过Excel打开,也可用Mac自带的Numbers打开。Numbers打开后搜索感觉不是很好使,使用Excel查看还不错。
网上有说使用Notepad++打开,我下载后电脑上安装了两个东西,一个IDLE,一个Python Launcher。Launcher不知道是个什么东西,IDLE就是一编辑器啊,那使用Sublime打开不也是一样的吗,我感觉没啥用。
日志文件一般数据量都比较大,要一条一条查看那不累死人,所以得想想办法把有用的日志筛选出来,针对性分析。
怎么筛选.csv文件里的主要信息呢?我百度了一下,关于使用python筛选csv文件日志的博客还挺多的。
使用Python对文件内容筛选
创建一个python项目
创建项目可以更加方便编辑和调试python代码,而且还可以在控制台查看筛选结果的打印。
如果是第一次使用python可以看这里:如何创建一个python项目。
脚本文件
我创建一个test.py的python脚本文件,写了这些代码:
import csv
import os
# 定义一个读取文件的函数
def readFile(fileName):
# 打开csv文件
csvFile = open(fileName, 'r')
# 读物csv文件
csvRead = csv.reader(csvFile)
# 遍历csv文件每一行
for csvline in csvRead:
# 如果这一行包含"RequestInfo:"
if ("RequestInfo:" in csvline[1]):
# 打印这行数据
print(csvline[1])
# 数据拼接,这里如果有java基础的话很容易理解
body = csvline[1] + '\n'
# 自动创建out.txt,并写入内容
writeFile("out.txt", body)
# 定义一个写文件的函数
def writeFile(fileName, body):
# 打开文件
writef = open(fileName, 'a+', encoding='utf8')
# 写入数据
writef.write(body)
# 关闭文件
writef.close()
def main():
# 筛选csv文件中包含"RequestInfo:"的数据,并打印,并创建一个新的txt文件将筛选的内容保存下来
for parent, dirnames, filenames in os.walk(os.getcwd()):
for filename in filenames:
if ("csv" in filename):
# print(filename)
readFile(filename)
if __name__ == '__main__':
main()
来自初学者的提问:readFile()函数中的body这个对象在这个函数执行完之后会不会自动被释放呢?
调试
上面的脚本代码是通过读取本工程目录下的csv文件,进行内容筛选,写入文件等操作。
将csv文件直接放到项目目录下之后,run这个脚本,执行完后会在项目目录下生成一个out.txt的文件,这就是我们需要筛选的所有内容了。
控制台打印的日志如下:
总结
Python脚本不仅仅可以从.csv文件中筛选主要信息,对其他文件也是可以,只要稍微改一下代码,我们就可以实现python对文件内容的筛选,像“爬虫”一样。
做完项工作后,我感觉不仅python能实现这个功能,其他任何一门语言只要能识别.csv文件都能完成这项任务,编程思想是通用的,代码是工具,我们可以尝试使用不同语言去实现这个功能。