2012-09-05 47 views
-1

在我的ftp服务器中包含一个日志文件记录所有下载记录,我想用Python获取这个文件并输出一个简化文件,其中包含最近一周或最近7天的记录。 日志文件,如.. in/CliMb/xxx。Python筛选器脚本

Sat Jun 2 03:32:13 2012 [pid 12461] CONNECT: Client "66.249.68.236" 
Sat Jun 2 03:32:13 2012 [pid 12460] [ftp] OK LOGIN: Client "66.249.68.236", anon  password "[email protected]" 
Sat Jun 2 03:32:14 2012 [pid 12462] [ftp] OK DOWNLOAD: Client "66.249.68.236", "/pub/10.5524/100001_101000/100022/readme.txt", 451 bytes, 1.39Kbyte/sec 
Sat Jun 2 03:32:22 2012 [pid 12677] CONNECT: Client "66.249.68.236" 
Sat Jun 2 03:32:23 2012 [pid 12676] [ftp] OK LOGIN: Client "66.249.68.236", anon password "[email protected]" 
Sat Jun 2 03:35:27 2012 [pid 12706] [ftp] FAIL DOWNLOAD: Client "66.2 

谢谢。

+3

[你尝试过什么?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – jfs

+0

我不知道python,现在我开始学习python,所以你可以给我一些建议来解决这个问题。 – AntiGMO

+1

将问题分解为更小的任务:如何在Python中读取/写入文件/流,如何从字符串中提取给定格式的日期(或(更复杂)如何比较日期而不将它们转换为日期时间对象) 。 – jfs

回答

0
import time 
lines = [] 
with open("somelog.txt") as f: 
     lines = [line for line in f] 
def OnlyRecent(line): 
     return time.strptime(line.split("[")[0].strip(),"%a %b %d %h:%m:%s %Y") < (time.time()-(60*60*24*5)) #5 days old 
print "\n".join(filter(OnlyRecent,lines)) 

类似的东西,至少...

+0

谢谢,我怎么能从服务器读取它像/ usr/bin中的日志文件 – AntiGMO

+0

ummm将它写入文件?开放(“somefile.txt”,“W”)为f:f.write(“\ n”.join(过滤器(OnlyRecent,lines))'...这是基本的基本python ...我会看看上面的JF Sebastians链接...我不想写你所有的代码给你...有自由的人会为你付费;) –

+0

当我使用这个返回time.strptime(line.split (“[”)[0] .strip(),“%a%b%d%h:%m:%s%Y”)<(time.time() - (60 * 60 * 24 * 5)) ,它有一些错误。有人说返回类型是错误的 – AntiGMO