㈠ 如何用 python 分析网站日志
日志的记录
Python有一个logging模块,可以用来产生日志。
(1)学习资料
http://blog.sina.com.cn/s/blog_4b5039210100f1wv.html
http://blog.donews.com/limodou/archive/2005/02/16/278699.aspx
http://kenby.iteye.com/blog/1162698
http://blog.csdn.NET/fxjtoday/article/details/6307285
前边几篇文章仅仅是其它人的简单学习经验,下边这个链接中的内容比较全面。
http://www.red-dove.com/logging/index.html
(2)我需要关注内容
日志信息输出级别
logging模块提供了多种日志级别,如:NOTSET(0),DEBUG(10),
INFO(20),WARNING(30),WARNING(40),CRITICAL(50)。
设置方法:
logger = getLogger()
logger.serLevel(logging.DEBUG)
日志数据格式
使用Formatter设置日志的输出格式。
设置方法:
logger = getLogger()
handler = loggingFileHandler(XXX)
formatter = logging.Formatter("%(asctime)s %(levelname) %(message)s","%Y-%m-%d,%H:%M:%S")
%(asctime)s表示记录日志写入时间,"%Y-%m-%d,%H:%M:%S“设定了时间的具体写入格式。
%(levelname)s表示记录日志的级别。
%(message)s表示记录日志的具体内容。
日志对象初始化
def initLog():
logger = logging.getLogger()
handler = logging.FileHandler("日志保存路径")
formatter = logging.Formatter("%(asctime)s %(levelname) %(message)s","%Y-%m-%d,%H:%M:%S")
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel
写日志
logging.getLogger().info(), logging.getLogger().debug()......
2. 日志的分析。
(1)我的日志的内容。(log.txt)
2011-12-12,12:11:31 INFO Client1: 4356175.0 1.32366309133e+12 1.32366309134e+12
2011-12-12,12:11:33 INFO Client1: 4361320.0 1.32366309334e+12 1.32366309336e+12
2011-12-12,12:11:33 INFO Client0: 4361320.0 1.32366309389e+12 1.32366309391e+12
2011-12-12,12:11:39 INFO Client1: 4366364.0 1.32366309934e+12 1.32366309936e+12
2011-12-12,12:11:39 INFO Client0: 4366364.0 1.32366309989e+12 1.32366309991e+12
2011-12-12,12:11:43 INFO Client1: 4371416.0 1.32366310334e+12 1.32366310336e+12
2011-12-12,12:11:43 INFO Client0: 4371416.0 1.32366310389e+12 1.32366310391e+12
2011-12-12,12:11:49 INFO Client1: 4376450.0 1.32366310934e+12 1.32366310936e+12
我需要将上述内容逐行读出,并将三个时间戳提取出来,然后将其图形化。
(2) 文件操作以及字符串的分析。
打开文件,读取出一行日志。
file = file("日志路径",“r”)
while True:
line = file.readline()
if len(len) == 0:
break;
print line
file.close()
从字符串中提取数据。
字符串操作学习资料:
http://reader.you.com/sharelite?itemId=-4646262544179865983&method=viewSharedItemThroughLink&sharedBy=-1137845767117085734
从上面展示出来的日志内容可见,主要数据都是用空格分隔,所以需要使用字符串的
split函数对字符串进行分割:
paraList = line.split(),该函数默认的分割符是空格,返回值为一个list。
paraList[3], paraList[4], paraList[5]中分别以字符串形式存储着我需要的时间戳。
使用float(paraList[3])将字符串转化为浮点数。
(3)将日志图形化。
matplotlib是python的一个绘图库。我打算用它来将日志图形化。
matplotlib学习资料。
matplotlib的下载与安装:
http://yexin218.iteye.com/blog/645894
http://blog.csdn.Net/sharkw/article/details/1924949
对matplotlib的宏观介绍:
http://apps.hi..com/share/detail/21928578
对matplotlib具体使用的详细介绍:
http://blog.sina.com.cn/s/blog_4b5039210100ie6a.html
在matplotlib中设置线条的颜色和形状:
http://blog.csdn.net/kkxgx/article/details/python
如果想对matplotlib有一个全面的了解,就需要阅读教程《Matplotlib for Python developers》,教程下载地址:
http://download.csdn.net/detail/nmgfrank/4006691
使用实例
import matplotlib.pyplot as plt
listX = [] #保存X轴数据
listY = [] #保存Y轴数据
listY1 = [] #保存Y轴数据
file = file("../log.txt","r")#打开日志文件
while True:
line = file.readline()#读取一行日志
if len(line) == 0:#如果到达日志末尾,退出
break
paraList = line.split()
print paraList[2]
print paraList[3]
print paraList[4]
print paraList[5]
if paraList[2] == "Client0:": #在坐标图中添加两个点,它们的X轴数值是相同的
listX.append(float(paraList[3]))
listY.append(float(paraList[5]) - float(paraList[3]))
listY1.append(float(paraList[4]) - float(paraList[3]))
file.close()
plt.plot(listX,listY,'bo-',listX,listY1,'ro')#画图
plt.title('tile')#设置所绘图像的标题
plt.xlabel('time in sec')#设置x轴名称
plt.ylabel('delays in ms'')#设置y轴名称
plt.show()
㈡ python 如何按比例分割文件
N=0.618
lines=open('a.txt','r').readlines()
lines_for_b=int(len(lines)*N)
open('b.txt','w').write(''.join(lines[:lines_for_b]))
open('c.txt','w').write(''.join(lines[lines_for_b:]))
㈢ Python 对一个TXT文件进行分割 并最后生成三个txt文件
汉子,主要是要雹孝咐使用正确源纯的编解码方式去识别
读取txt文件
将慎乎内容分为三部分
再分别写成txt文件即可
㈣ python 多线程中 日志按天分割
python 的 logging 模块, 在多线程应用中, logging.hanlders.TimedRotatingFileHandler 不能清洞前正常按日颤手期分割。
解决办法为:重写FileHandler类,用于多线程中日志按天分割。
之后,Logger定义日志的各种参数(格式等):
实例化答清日志:
㈤ python读文件与分割
f = open("foo.txt") # 返回一个文件对象
line = f.readline() # 调用文件的 readline()方法
line.split("\001")
while line:
print line, # 后枣唯面跟 ',' 将忽略差岩颂换行虚郑符
#print(line, end = '') # 在 Python 3 中使用
line = f.readline()
f.close()
㈥ python的日志,如何做到一天是单独一个日志,并且定期清理
创建以日期为文件的log文件(如:20140911.log),写日志前判断存放日志路径是否存在以当天日期为文件名的文件,如果存在添加日志信息,不存在就创建,在写日志信息。
定期清理亦可以按照此思路来做
㈦ 利用python进行文本分割,每三行分成一个新文件
这个比较简单
i=0
fw=open('0.txt','w')
forlineinopen('fn.txt','r'):
fw.write(line)
i+=1
ifi%3==2:
fw.close()
fw=open(str(i)+'.txt','w')
fw.close()
差不多就这样,你试试,我没有测试
㈧ 如何用python3 将一个大的excel文件(.xlsx)分割为多个excel的文件,sheet 不变。以下是我的代码:
我觉得你要处理数据的话最好用数据库,把excel中的数据读入到数据库中再处理就很轻松了。用python本身支持的sqlite就够了,才800多兆而已。