Python에서 tail 명령 구현
4536 단어 pythonprogrammingbeginners
소개
이 기사에서는 Linux에서
tail
명령의 간단한 구현을 작성합니다. 이 프로그램은 파일과 정수n
를 입력으로 사용하고 파일의 마지막n
줄을 인쇄합니다. 또한 프로그램의 목표는 전체 파일을 한 번에 메모리로 읽지 않는 것입니다. 이것은 매우 큰 파일을 다룰 때 프로그램 메모리를 효율적으로 만듭니다.구현 세부 정보
이 프로그램을 구현하기 위해
queue
데이터 구조를 사용할 것입니다. 파일을 한 줄씩 읽고 각 줄을 대기열에 넣습니다. 반복할 때마다 대기열의 크기를 확인합니다. 큐의 크기가 n
보다 크거나 같으면 큐에 처음 삽입된 요소를 제거합니다. 큐는 FIFO 데이터 구조이므로 큐에 처음 삽입된 요소가 큐에서 제거되는 첫 번째 요소가 됩니다. 이렇게 하면 대기열에 파일의 마지막 줄n
만 포함됩니다.보너스로 cli의 입력을 처리하기 위해
argparse
를 사용했습니다. 이 프로그램의 구현을 살펴보자.import argparse
import queue
def tail(filename, n):
q = queue.Queue()
size = 0
with open(filename) as fh:
for line in fh:
q.put(line.strip())
if size >= n:
q.get()
else:
size += 1
for i in range(size):
print(q.get())
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Print last n lines from a file.')
parser.add_argument('file', type=str, help='File to read from')
parser.add_argument('-n', type=int, default=10, help='The last n lines to be printed')
args = parser.parse_args()
tail(args.file, args.n)
Reference
이 문제에 관하여(Python에서 tail 명령 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/abvarun226/implement-tail-command-in-python-4nn8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)