2012-09-05 8 views
-1

내 FTP 서버에 로그 파일 레코드가 모두 다운로드 레코드가 들어 있습니다. 파이썬을 사용하여이 파일을 가져 와서 최신 1 주 또는 7 일 동안 레코드가 포함 된 단순화 된 파일을 출력하고 싶습니다. /CliMb/xxx의 ..와 같은 로그 파일.파이썬 필터 스크립트

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

나는 파이썬에 대해 몰랐다. 이제 파이썬을 배우기 시작한다. 그래서이 질문을 해결하기 위해 조언을 해줄 수 있을까? – AntiGMO

+1

더 작은 작업으로 문제를 해결하십시오 : 파이썬에서 파일/스트림을 읽거나 쓰는 방법, 문자열에서 주어진 형식으로 날짜를 추출하는 방법 (또는 (더 복잡한) 날짜 시간 객체로 변환하지 않고 날짜를 비교하는 방법) . – 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 (filter (OnlyRecent, lines))'...와 함께 사용하면 기본 기본 파이썬이됩니다. 위의 JF Sebastians 링크를보세요 ... 나는 당신을 위해 모든 코드를 작성하고 싶지 않습니다 ... 거기에 수수료를 지불 할 무료 랜서가 있습니다;) –

+0

언제이 시간을 사용하여 반환합니다 .strptime (line.split (time.time() - (60 * 60 * 24 * 5)) ("[" "[0]. 스트립(),"% a % b % d % h : % m : % s % , 그것은 약간의 오류가 있습니다. 누군가가 반환 유형이 잘못되었다고 말합니다. – AntiGMO