open() 함수는 파일을 엽니다. 파일을 읽으려면 반드시 "r" 모드를 사용해야 하며, 열어둔 파일의 내용은 read(), readline(), readlines() 함수를 통해 가져올 수 있습니다.
왜 파이썬으로 파일을 읽어야 할까요?
파이썬은 데이터를 처리할 때 매우 유용한 프로그래밍 언어입니다. 파일을 손쉽게 읽고, 쓰고, 조작할 수 있도록 다양한 내장 함수를 기본적으로 제공하기 때문입니다.
예를 들어 직원 이름 목록이 있고, 특정 사용자의 이름이 그 목록에 포함되어 있는지 확인하고 싶다고 가정해 봅시다. 직원 이름 목록을 파일로 저장한 다음, 파이썬으로 해당 파일을 읽어 특정 이름이 파일 안에 있는지 손쉽게 확인할 수 있습니다.
이 글에서는 파이썬에서 파일을 읽는 기본기를 차근차근 살펴보겠습니다. 먼저 파일을 여는 방법과 접근하는 방법을 알아본 뒤, 실제로 파일을 읽는 다양한 방법까지 소개하겠습니다.
파이썬에서 읽기용 파일 열기
파이썬에서 파일을 읽는 첫 번째 단계는 읽고자 하는 파일을 여는 것입니다. 이때 어떤 파일을 열지 파일 이름을 파이썬에 알려줘야 합니다.
파일을 읽으려면 먼저 해당 파일이 어디에 위치하는지 경로를 지정해야 합니다. 파일 경로를 정의하고 변수에 할당하는 방식으로 이를 수행할 수 있습니다.
다음은 파이썬에서 파일을 여는 기본 문법입니다:
filename = "/users/career_karma/names.txt" names_file = open(filename, 'r')
위 코드는 filename 변수에 정의된 경로에 있는 파일을 엽니다.
open() 함수의 두 번째 인자로 넣은 r 플래그는 "읽기(read) 모드"로 파일을 열겠다는 의미입니다. 파일을 수정하고 싶다면 이 플래그를 다른 값(예: 쓰기용 "w")으로 변경하면 됩니다.
파이썬에서 파일 읽기
파일을 열었다면 이제 파이썬으로 내용을 읽을 수 있습니다. 파일에서 데이터를 읽을 때 사용할 수 있는 대표적인 함수는 다음 세 가지입니다:
read(): 파일의 전체 내용을 반환합니다readline(): 파일의 다음 한 줄을 반환합니다readlines(): 파일의 모든 줄을 리스트 형태로 반환합니다
각 함수가 어떻게 동작하는지 하나씩 자세히 살펴보겠습니다.
텍스트 파일 전체 읽기: read()
read() 메서드는 파일의 전체 내용을 하나의 문자열로 반환합니다. 다음은 이름 목록이 담긴 텍스트 파일에 read()를 적용한 예제입니다:
path = "/users/career_karma/names.txt" names_file = open(path, 'r') print(names_file.read())
이 프로그램은 다음과 같은 결과를 출력합니다:
"Sally\nAlex\nPamela\nJonas\nLuke\nWill\n"
read() 메서드는 names 파일의 모든 내용을, 문자열 끝의 개행 문자(\n)까지 포함하여 그대로 반환했습니다.
한 줄씩 읽기: readline()
readline() 함수는 파일의 다음 한 줄을 반환합니다. 이때 텍스트와 함께 줄 끝의 개행 문자도 함께 반환됩니다. 다음 코드는 파일의 첫 번째 줄을 읽습니다:
print(names_file.readline())
실행 결과는 다음과 같습니다:
"Sally\n"
이미 연 파일에서 첫 번째 줄과 두 번째 줄을 모두 읽고 싶다면 readline() 함수를 다시 호출하면 됩니다. 함수를 호출할 때마다 파일 포인터가 다음 줄로 이동하기 때문입니다:
names_file = open(path, 'r') print(names_file.readline()) print(names_file.readline())
실행 결과:
"Sally\n" "Alex\n"
파이썬에서 파일을 줄 단위로 읽기
readline() 함수는 파일을 한 줄씩 순서대로 읽고 싶을 때 특히 유용합니다. 보통 for 반복문과 함께 사용해 파일의 여러 줄을 읽어 들입니다:
for i in range(0, 2):
print(names_file.readline())
실행 결과:
"Sally\n" "Alex\n"
모든 줄을 리스트로 읽기: readlines()
마지막으로 readlines() 메서드는 파일의 모든 줄을 리스트로 반환합니다. 리스트의 각 항목은 파일 내의 한 줄에 해당합니다:
print(names_file.readlines())
프로그램 실행 결과:
['Sally\n', 'Alex\n', 'Pamela\n', 'Jonas\n', 'Luke\n', 'Will']
여기서 주의할 점이 있습니다. 파일을 한 번 끝까지 읽으면 다시 읽을 수 없습니다. 즉, readlines()로 파일을 읽은 후에는 어떤 읽기 작업을 시도해도 빈 문자열이 반환됩니다. 파일을 여러 번 읽고 싶다면 파일을 다시 열어서 읽어야 합니다.
파일 닫기
파일 작업이 끝나면 close() 메서드로 파일을 닫아 시스템 리소스를 해제하는 것이 좋습니다:
names_file.close()
더 안전한 방법은 with 문을 사용하는 것입니다. 코드 블록이 종료되면 파일이 자동으로 닫히므로 실수로 파일을 닫지 않는 일을 방지할 수 있습니다:
with open(path, 'r') as names_file:
print(names_file.read())
마무리
read(), readline(), readlines() 함수를 활용하면 파일의 원하는 부분만 골라 읽을 수 있으며, 읽어 들인 데이터를 필요에 맞게 가공할 수 있습니다. 이번 글에서는 파이썬에서 파일을 여는 방법, 다양한 메서드로 파일을 읽는 방법, 그리고 파일을 안전하게 닫는 방법까지 살펴보았습니다.
이제 여러분도 전문가처럼 파이썬 파일을 열고 읽을 준비가 되었습니다! 파이썬을 더 깊이 배우고 싶다면 관련 학습 가이드를 참고해 보세요.