2013-04-15 4 views
0

로그 파일 (YYMMDD 형식으로되어 있음)이 있는데, 파일에서 중요한 정보 만 가져 오는 스크립트를 만들고 싶습니다 (예 : "O : NVS : VOICE "). 전에 파이썬을 사용 해 본 적이 없으므로 도움을 받으십시오! 당신은 알아야합니다Python이 로그 파일을 읽고 특정 단어를 포함하는 행을 가져옵니다.

+1

이미 시도한 것과 문제가있는 부분에 대한 아이디어가 필요합니다. 파일을 여는 데 도움이 필요합니까? 거기에있는 데이터를 파싱 하시겠습니까? 관심있는 정보를 인쇄/작성 하시겠습니까? – thegrinner

+0

사실 저는 실제로 파이썬으로 프로젝트를 시작 했으므로 솔루션에 대해 여전히 생각하고 있습니다. 경험이있는 사람들로부터 아이디어를 얻고 싶습니다. 스크립트는 그와 같은 특정 단어를 얻는 것을 목표로합니다. 서버에 의해 매일 생성되는 로그 파일에서 말한 다음 mysql 데이터베이스에 저장하여 많은 수의 행을 얻을 수있는 방법을 모릅니다. 따라서 매일 생성됩니다. –

답변

10

이것은 당신이 잘 시작할 수 있어야합니다

infile = r"D:\Documents and Settings\xxxx\Desktop\test_log.txt" 

important = [] 
keep_phrases = ["test", 
       "important", 
       "keep me"] 

with open(infile) as f: 
    f = f.readlines() 

for line in f: 
    for phrase in keep_phrases: 
     if phrase in line: 
      important.append(line) 
      break 

print(important) 

더 완벽한 의미에서 그것은 예를 들어 예외 처리 또는 패턴 일치가없는,하지만 당신은 아주 쉽게에 추가 할 수 없습니다. 구문 검색보다 나은 정규 표현식을 살펴보십시오. 파일이 너무 큰 경우 MemoryError를 피하기 위해 파일을 한 줄씩 읽으십시오.

입력 파일 :

This line is super important! 
don't need this one... 
keep me! 
bla bla 
not bothered 
ALWAYS include this test line 

출력 :

['This line is super important!\n', 'keep me!\n', 'ALWAYS include this test line'] 

참고 :이 파이썬 3.3입니다. 2.7을 사용하는 경우 print 문 (괄호 제거)을 수정해야합니다.

+0

문제를 피할 수 있습니다 readlines를 호출하는 것이 아니라 파일 객체를 루핑 (looping)하여 대용량 파일을 처리합니다. 그냥'with'안에'for line'을'with' 안에 넣고'f.readlines()'를 제거하십시오. –

관련 문제