파일 읽기

매일 공부(ML)·2022년 2월 16일
0

학습목표

텍스트 파일을 읽어온 후 내장 함수를 활용해 특정 문자열의 개수를 알아 낼 수 있다.


핵심 키워드

open() 함수

counting


파일 핸들

파일 핸들(File Handle)은 순서가 있고 연속적으로 구성된 텍스트 파일을 한줄한줄 읽어 나가게 됩니다.

fhand = open('Hamlet.txt')

for line in fhand :
    print(line)

# 다음을 출력하게 되면 한줄씩 띄워져서 출력되게 됩니다.

파일의 라인 수 세기

파일의 문장이 몇 줄이 있는지 확인하기 위해서 매우 간단한 방법으로 해결할 수 있습니다.

fhand = open('Hamlet.txt')
count = 0

for line in fhand :
    count = count + 1
print('Line Count: ', count)

# Line Count:  35로 출력됩니다.

파일 전체 읽기

우리는 전체 텍스트 파일을 단일한 하나의 문장으로 읽어 들어 올 수도 있습니다.

물론 각 문장에 대한 구분은 개행문자로 구분되어 있습니다.

fhand = open('mbox-short.txt')
inp = fhand.read()
print(len(inp))
# 94646으로 출력됩니다.
print(inp[:20])
# From stephen.marquar으로 출력됩니다.

파일 내용 검색하기

우리는 기존에 배웠던 문자열과 관련된 내장 함수를 활용해서 특정 문자열로 시작하는 문자를 찾을 수 있습니다.

fhand = open('mbox-short.txt')
for line in fhand:
    if line.startswith('From:') :
        print(line)

# 결과값으로 From: 으로 시작되는 문자열이 출력되게 됩니다.

하지만 결과를 보게 되면 한 줄씩 띄워져 있는 것을 발견할 수 있습니다.

이에 대한 원인은 print()함수로 출력되면서 앞서 말씀드린 것처럼 개행 문자가 계속해서 추가되기 때문입니다. 새로운 라인은 공백으로 인식되기 때문에 해당 부분을 제거 하게 되면 우리는 기본적으로 추가 되어 있던 개행 문자를 삭제 할 수 있습니다.

기억을 떠올려 본다면 문자열의 오른쪽 공백을 제거하는 함수는 rstrip()이었습니다.

fhand = open('mbox-short.txt')
for line in fhand:
    line = line.rstrip() # 오른쪽 공백 제거
    if line.startswith('From:') :
        print(line)

파일 이름 입력 받기

사용자가 파일의 이름을 직접 입력해야 하는 경우도 있을 수 있습니다. 파일명을 적절힌 입력한다면 문제가 없겠지만 잘못된 파일명을 입력했을 때 처리방법을 생각할 필요가 있습니다.

이미 배운 try, except문을 적절히 활용하면 발생할 수 있는 오류 상황을 적절하게 해결 할 수 있을 것입니다.

fname = input('Enter the file name:  ')
try:
    fhand = open(fname)
except:
    print('File cannot be opened: ', fname)
    quit()

count = 0
for line in fhand:
    if line.startswith('Subject:') :
        count = count + 1
print('There were', count, 'subject lines in', fname)

# There were 27 subject lines in mbox-short.txt와 같이 출력됩니다.
profile
성장을 도울 아카이빙 블로그

0개의 댓글