2021년 7월 11일 일요일

python 으로 만드는 tail byte

linux에 기본으로 존재하는 head tail이라는것이 있습니다.

특정 파일을 열어서 어떤 형태인지 간단하게 확인하는 용도로 많이 사용하곤 합니다. 이것중 tail을 간단하게 구현해 보도록 하겠습니다.

tail은 덩치가 큰 로그 같은 파일에서 마지막 데이터만 끄집에 내는 용도로 사용할 수 있습니다.

핵심 코드는 seek가 됩니다.  읽은 데이터가 byte type이므로 이것을 decode해줄 필요가 있어서 decode('utf-8') 를 해줍니다.

11_tail.py

import os

def get_tail_byte(fname,last_bytes):
	# Open file with 'b' to specify binary mode
	with open(fname, 'rb') as file:
		file.seek(last_bytes * -1, os.SEEK_END)  # Note minus sign
		byte_data = file.read()
		return byte_data.decode('utf-8')
	return ""


if __name__ == "__main__":
	print(get_tail_byte("11_tail.py",100))

실행시 끝의 100 byte를 읽어서 출력하는 코드입니다.

결과

code('utf-8')
        return ""


if __name__ == "__main__":
        print(get_tail_byte("11_tail.py",100))

참고로 결과는 깨끗하게 line 시작 부분이 나오지 않습니다.


댓글 없음:

댓글 쓰기