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 실시간(?) 검사하기 예제 소스에 대한 글 이였습니다.
android logcat 실시간 parsing 해서 error 찾기 (0) | 2014.10.31 |
---|---|
[프로그래밍] Python 파이썬 파일 입출력 방법. 읽기, 파일 쓰기 방법 (0) | 2014.10.27 |
Python에서 모든 형태의 배열을 문자열로 만들기. array to string (0) | 2014.07.10 |