프로그래밍에서 데이터를 파일로 저장하거나 파일에서 데이터를 읽는 작업은 매우 중요합니다. 이 과정을 통해 프로그램이 생성하는 데이터의 영속성을 유지할 수 있으며, 파일 입출력 기능은 파이썬에서도 같은 역할을 수행합니다. 이번 글에서는 파이썬의 파일 입출력에 대해 자세히 알아보고, 실제 코드를 통해 어떻게 구현할 수 있는지를 살펴보겠습니다.

파일 입출력 이해하기
파이썬에서는 파일 입출력을 위해 여러 가지 내장 함수를 제공합니다. 가장 기본적인 파일 입출력 방식은 파일을 열고, 데이터를 읽거나 쓰고, 마지막으로 파일을 닫는 순서로 이루어집니다. 이러한 과정을 이해하는 것이 프로그래밍에서 데이터를 효과적으로 처리하는 데 큰 도움이 됩니다.
파일 열기
파일을 사용하기 위해서는 우선 해당 파일을 열어야 합니다. 이 작업은 open()
함수를 통해 수행되며, 이 함수는 파일 경로와 모드를 인자로 받습니다. 파일 모드는 파일을 어떻게 사용할지를 정의하는 문자열입니다. 주요 파일 모드는 다음과 같습니다:
r
: 읽기 모드 (파일을 읽기 전용으로 열며, 파일이 존재하지 않으면 오류 발생)w
: 쓰기 모드 (파일이 없으면 새로 생성하고, 존재하는 경우 기존 내용을 지움)a
: 추가 모드 (파일이 없으면 새로 생성하여 내용을 추가)r+
: 읽기 및 쓰기 모드 (파일을 읽거나 쓸 수 있음)
예를 들어, sample.txt
파일을 쓰기 모드로 열고 싶다면 다음과 같이 작성할 수 있습니다:
file = open('sample.txt', 'w')
파일에서 데이터 읽기
파일을 열었으면 이제 데이터를 읽을 수 있습니다. 파일 읽기는 여러 방법으로 수행할 수 있으며, 가장 일반적인 방법은 read()
, readline()
, readlines()
를 사용하는 것입니다.
read() 메서드
이 메서드는 파일의 모든 내용을 하나의 문자열로 반환합니다. 사용 예시는 다음과 같습니다:
with open('sample.txt', 'r') as file:
content = file.read()
print(content)
위 코드는 파일의 모든 데이터를 읽고 출력합니다.
readline() 메서드
한 줄씩 파일을 읽고 싶다면 readline()
메서드를 사용할 수 있습니다. 이 메서드는 파일의 현재 위치에서 한 줄을 읽어 반환합니다. 파일의 끝에 도달하면 빈 문자열을 반환합니다:
with open('sample.txt', 'r') as file:
line = file.readline()
while line:
print(line.strip()) # 줄 끝의 개행 문자 제거
line = file.readline()
readlines() 메서드
모든 줄을 리스트로 읽고 싶다면 readlines()
를 사용합니다. 이 메서드는 각 줄을 리스트의 요소로 반환합니다:
with open('sample.txt', 'r') as file:
lines = file.readlines()
for line in lines:
print(line.strip())
파일에 데이터 쓰기
이제 파일에 데이터를 작성하는 방법에 대해 알아보겠습니다. 파일을 열고 내용을 추가하기 위해서는 쓰기 모드를 사용해야 합니다. write()
메서드를 사용하여 문자열을 파일에 쓸 수 있습니다.

write() 메서드
다음은 파일에 문자열을 쓰는 예제입니다:
with open('sample.txt', 'w') as file:
file.write('안녕하세요, 파이썬!\n')
이 예제는 sample.txt
파일에 “안녕하세요, 파이썬!”이라는 문구를 작성합니다. 파일이 기존에 있으면 그 내용을 모두 지우고 새로 작성합니다.
writelines() 메서드
여러 줄을 한 번에 추가하고 싶다면 writelines()
를 사용합니다:
lines = ['첫 번째 줄\n', '두 번째 줄\n', '세 번째 줄\n']
with open('sample.txt', 'w') as file:
file.writelines(lines)
이 경우, 리스트에 저장된 각 문자열이 파일에 추가됩니다.
파일 닫기와 자동 파일 관리
파일 작업이 끝난 후에는 반드시 파일을 닫아야 합니다. 이를 위해 close()
메서드를 호출해야 합니다:
file.close()
하지만 with
문을 사용하면 작업이 끝난 후에 자동으로 파일이 닫힙니다. with
문은 파일의 유효 범위를 제한하여, 코드 블록이 종료되면 파일이 자동으로 닫히도록 해줍니다. 이는 메모리 관리를 효율적으로 할 수 있게 도와줍니다:
with open('sample.txt', 'r') as file:
content = file.read()
print(content)
예외 처리
파일 입출력 작업 중에는 다양한 오류가 발생할 수 있습니다. 예를 들어, 파일이 존재하지 않는 경우, 접근 권한이 없는 경우 등이 있습니다. 이러한 상황에 대비하기 위해 예외 처리를 통해 오류를 처리하는 것이 좋습니다. 다음은 간단한 예외 처리 코드입니다:
try:
with open('sample.txt', 'r') as file:
content = file.read()
except FileNotFoundError:
print('파일을 찾을 수 없습니다.')
except PermissionError:
print('파일을 열 권한이 없습니다.')
except IOError as e:
print(f'파일 오류: {e}')

결론
파이썬의 파일 입출력 기능은 프로그램에서 데이터를 영속적으로 저장하고 관리하는 데 필수적입니다. 파일을 여는 방법, 읽기 및 쓰기 방법 그리고 오류 처리 방법에 대해 알아보았습니다. 이와 같은 지식을 바탕으로 여러분의 파이썬 프로그래밍을 한층 더 강화할 수 있을 것입니다. 파일 입출력에 대한 이해가 깊어질수록 더욱 다양한 프로젝트에 적용할 수 있을 것입니다.
자주 물으시는 질문
파이썬에서 파일을 여는 방법은 무엇인가요?
파일을 사용하기 위해서는 open()
함수를 사용하여 원하는 파일 경로와 모드를 지정해야 합니다. 모드는 파일을 어떻게 사용할지를 정의합니다.
파일에서 데이터를 읽으려면 어떻게 해야 하나요?
파이썬에서는 read()
, readline()
, readlines()
메서드를 통해 파일의 내용을 읽을 수 있습니다. 각 메서드는 파일을 읽는 방식이 다릅니다.
파일에 어떻게 데이터를 쓸 수 있나요?
파일에 내용을 추가하려면 쓰기 모드에서 write()
메서드를 사용하여 문자열을 기록하거나, 여러 줄을 추가하고 싶다면 writelines()
를 활용할 수 있습니다.
파일 작업 후 파일을 닫는 것은 왜 중요한가요?
파일 작업을 마친 후에는 반드시 파일을 닫아야 메모리 누수를 방지하고, 작업한 내용이 제대로 저장되도록 할 수 있습니다. with
문을 사용하면 자동으로 파일이 닫힙니다.