상세 컨텐츠

본문 제목

python 으로 file parsing (변화 내용 검사 하기)

Study/Python

by 휀스 2014. 11. 12. 23:37

본문



python 으로 file parsing (변화 내용 검사 하기)


python (파이썬) 으로 android logcat message 실시간(?) 검사하기 예제 소스


구글링 실패로 python (파이썬) 으로 logcat message 를 filtering 하는 방법을 못 찾아 대충 만들어 버렸습니다. ㅠㅠ




소스는 아래와 같습니다.


import threading

import time


class ThreadTest(threading.Thread):

        def run(self):

                fileseek = 0

                while True :

                        f = open("logcat.out","r")

                        f.seek(fileseek)

                        while True :

                                print ("in Thread")

                                data = f.readline()

                                fileseek = f.tell()

                                if not data :

                                        print (fileseek)

                                        break

                                else :

                                        splitedData = data.split(" ")

                                        if str.find(splitedData[0],"D/dalvikvm") != -1 :

                                                print ("D/dalvikvm found")

                                        else :

                                                print (splitedData[0])

                        f.close

                        time.sleep(5)


t = ThreadTest()

t.start()


이 내용은 로컬에 logcat.out 이라는 파일로 logcat data를 저장 하도록 해 놓고 (실제 사용에서는 filtering 된 log를 저장하도록 하였습니다.) 이 파일을 5초 간격으로 읽어 D/dalvikvm 이라는 string 이 있으면 찾았다고 출력하고 없으면 첫 string 을 출력하는 예제 입니다.

파일을 읽는 위치는 최종읽은 위치를 저장하도록 하여 해당부분 이후부터 읽도록 하였습니다.






Thread 로 돌아가는 이유는 Thread 를 사용해야하는 사정이 있어서 입니다. Thread 가 필요 없다면 


fileseek = 0 부분부터 time.sleep(5) 부분 까지만 사용해도 됩니다.


이렇게 해서 특정 동작을 하며 logcat 에서 해당 message가 나오는지 검사하여 동작의 이상여부를 판단하는 것 입니다.




data.split(" ") 부분은 log cat message 에서 실제 message 부분을 걸러내기 위함입니다. 실제 사용에서는 message 부분을 봐야하니 split(" ", 2) 로 사용해야 하겠네요.


사실 이 예제는 실시간이 아니며 약 5초 이상의 gap 이 생기는 방법입니다. 물론 sleep 시간을 줄이면 되겠지만 gap을 없애지는 못하겠죠. 그리고 잦은 file read가 일어나게되니 바람직한 방법도 아니구요.


테스트 예제로 만들어본거라 python (파이썬)에서 logcat 을 실시간 parsing 하는 방법을 구글링해서 찾으면 해당 방법으로 교체할 예정입니다. ^^


로그캣이 아니라 다른 data file 을 읽어 사용해도 되니 쓸모 없는 코드가 되지는 않을 것 같네요.


이상 python (파이썬) 으로 android logcat message 실시간(?) 검사하기 예제 소스에 대한 글 이였습니다.




관련글 더보기