2014-09-25 4 views
-1

많은 파일에서 파이썬 스크립트를 실행하고 출력을 읽으려고합니다.python에서 실행이 제대로 끝나는 지 확인하십시오.

if file == "output": 

하지만이 출력은 실행이 정상적으로 완료되면 확인 dosn't : 파일로 존재하는 경우 현재 만 확인합니다. 실행이 제대로 끝나면 파일의 마지막 줄은 "이 작업은"

으로 끝납니다.이 마지막 행 하나의 파일을 어떻게 읽을 수 있습니까? 파이썬 (초보자) 내 현재의 지식으로 가, 내가 관리해야 :

#!/usr/bin/python3 
import os 
input = "FeMnPSi_EOS_10." 
for subdirs, dirs, files in os.walk(input): 
    for file in files: 
     if file == "out-Dy-eos2": 
      print("file found") 
      ifile=input+"/"+file 
      with open(ifile, "r") as if1: 
       for line in if1: 
        if "This run finished at" in line: 
         print("Ends Properly") 

이 코드의 문제는 : 그것은 모르는

  • 은 "이 실행이에 완료"경우 행은 파일의 끝에서 두 번째 행인 입니다.
  • 잘 모르겠지만, 여기에 파이썬은 파일을 순차적으로 읽어야합니다 .... 각 10000+ 회선에 대해 각 파일.

그래서 전체 파일을 읽지 않고도 행이 존재하는지, 마지막 두 행 사이에 있는지 확인하는 것이 더 좋을까요?

+1

[파일의 마지막 몇 줄 읽는 법] (http://stackoverflow.com/a/260433/4279). 10K +가 작기 때문에 마지막 두 줄을 얻기 위해서'if1.readlines() [- 2 :]'만 쓸 수 있습니다. – jfs

+0

@ J.F.Sebastian OP는 그의 라인이 얼마나 오래되었는지를 말하지 않았으며 그는 효율적인 방법을 요구하고 있습니다. – simonzack

+0

@imonzack : 그리고? 내 이전 의견에서 링크를 발견 했습니까? – jfs

답변

-1

누락 된 비트는 전체 파일을 문자열 목록으로 읽는 if1.readlines()입니다. 그런 다음 슬라이스 표기법을 사용하여 마지막 요소를 액세스 할 수 있습니다.

with open(ifile, 'rb') as if1: 
    if "This run finished at" in if1.readlines()[-2] 
     print("Ends Properly") 
+0

-1 (중복 답변) – simonzack

+0

OP는 마지막 두 줄, 마지막에서 두 번째 줄만 묻습니다. –

관련 문제