이 튜토리얼에서는 Python의 파일 처리(File Handling) 방법에 대해 알아봅니다. Python은 내장 함수만으로도 파일을 손쉽게 생성하고 편집할 수 있어 초보자도 부담 없이 시작할 수 있습니다.
Python에서 다룰 수 있는 파일은 크게 두 가지로 나뉩니다. 각각 어떤 특징이 있는지 살펴보겠습니다.
파일의 두 가지 종류
텍스트 파일(Text Files)
텍스트 파일은 영문 알파벳 등 사람이 읽을 수 있는 문자로 구성된 일반적인 파일입니다. 파일 안에 담긴 내용을 우리는 '텍스트'라고 부릅니다.
바이너리 파일(Binary Files)
바이너리 파일은 0과 1로 이루어진 데이터를 저장하는 파일입니다. 이 형식은 사람이 직접 읽고 이해하기 어렵습니다.
파일 접근 모드
Python에서 파일을 다룰 때는 반드시 해당 파일의 접근 모드(access mode)를 지정해야 합니다. 예를 들어 파일을 열어 내용을 작성하고 싶다면 '쓰기' 모드를 사용하는 식입니다. 상황에 따라 사용할 수 있는 다양한 접근 모드를 정리하면 다음과 같습니다.
읽기 전용 - r
파일의 내용을 읽기만 할 수 있는 모드입니다. 파일이 존재하지 않으면 에러가 발생합니다.
읽기 및 쓰기 - r+
파일의 내용을 읽을 수 있을 뿐만 아니라 데이터를 작성할 수도 있습니다. 단, 파일이 존재하지 않으면 에러가 발생합니다.
쓰기 전용 - w
파일에 내용을 작성할 수 있는 모드입니다. 기존 파일에 데이터가 있다면 모두 덮어씌워집니다(override). 파일이 존재하지 않으면 새로 생성됩니다.
추가 전용 - a
파일의 끝부분에 데이터를 추가(append)할 수 있는 모드입니다. 기존 내용은 그대로 유지되며, 파일이 없으면 새로 생성됩니다.
추가 및 쓰기 - a+
파일 끝에 데이터를 추가하면서 동시에 쓰기 작업도 가능한 모드입니다. 파일이 존재하지 않으면 새로 생성됩니다.
파일에 데이터 쓰기
그럼 실제로 파일에 데이터를 작성하는 방법을 살펴보겠습니다. 기본 흐름은 다음 세 단계입니다.
- open() 함수로 파일을 w 모드로 엽니다. 읽기와 쓰기를 함께 하려면 r+ 모드로 열면 됩니다.
- write() 또는 writelines() 메서드로 데이터를 파일에 작성합니다.
- 작업이 끝나면 파일을 닫습니다(close).
아래 코드를 통해 위 과정을 구현할 수 있습니다.
예제 코드
# 'w' 모드로 파일 열기
file = open('sample.txt', 'w')
# write() - 텍스트를 파일에 직접 작성
# writelines() - 여러 줄 또는 문자열을 한 번에 작성, 이터레이터(iterator)를 인수로 받음
# write() 메서드로 데이터 작성
file.write("I am a Python programmer.\nI am happy.")
# 파일 닫기
file.close()프로그램이 실행된 디렉터리로 이동하면 sample.txt라는 파일이 생성된 것을 확인할 수 있습니다. 파일을 열어 내용이 잘 작성되었는지 확인해 보세요.
파일에서 데이터 읽기
앞서 파일에 데이터를 작성하는 방법을 배웠으니, 이번에는 작성된 데이터를 다시 읽어오는 방법을 알아보겠습니다. 절차는 다음과 같습니다.
- open() 함수로 파일을 r 모드로 엽니다. 읽기와 쓰기를 함께 하려면 r+ 모드를 사용합니다.
- read(), readline(), readlines() 메서드 중 하나로 데이터를 읽어 변수에 저장합니다.
- 저장한 데이터를 화면에 출력합니다.
- 파일을 닫습니다.
각 메서드의 역할은 주석으로 설명되어 있는 아래 코드를 참고하세요.
예제 코드
# 'r' 모드로 파일 열기
file = open('sample.txt', 'r')
# read() - 파일의 전체 내용을 읽음
# readline() - 원하는 줄 수만큼 읽음, 줄 수를 인수로 하나 받음
# readlines() - 파일의 모든 줄을 읽어 리스트(list)로 반환
# read() 메서드로 파일에서 데이터 읽기
data = file.read()
# 데이터 출력
print(data)
# 파일 닫기
file.close()실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
I am a Python programmer. I am happy.
마무리
이상으로 Python에서 텍스트 파일을 읽고 쓰는 기본적인 방법을 살펴보았습니다. 파일 입출력은 실제 프로젝트에서 매우 자주 사용되는 핵심 기능이므로, 오늘 배운 내용을 직접 코드로 작성해 보며 확실히 익혀두시기 바랍니다. 궁금한 점이 있다면 댓글로 남겨주세요!