프로그래밍/Python

파이썬 파일 입출력 완벽 가이드: 파일 열기, 닫기, 그리고 실전 활용

shimdh 2025. 2. 25. 13:37
728x90

소프트웨어 개발에서 파일 입출력(File I/O) 은 데이터를 저장하고 불러오는 필수적인 기능입니다. 프로그램이 실행 중 데이터를 외부 파일에 저장하거나, 저장된 데이터를 다시 읽어오는 작업은 매우 중요하며, 이를 효율적으로 처리하는 것이 프로그램의 안정성과 성능을 향상시키는 핵심 요소입니다.

파이썬에서는 open() 함수를 통해 손쉽게 파일을 열고 읽거나 쓸 수 있으며, with 문을 사용하면 보다 안전하게 파일을 다룰 수 있습니다. 이번 글에서는 파일을 여는 방법부터 안전하게 닫는 방법, 그리고 실전에서 자주 활용되는 파일 입출력 기법까지 자세히 알아보겠습니다.


1. 파일을 여는 방법: open() 함수 활용

1.1 open() 함수란?

파이썬에서 파일을 다루려면 먼저 파일을 열어야 합니다. 이를 위해 open() 함수를 사용하며, 기본 구문은 다음과 같습니다.

file = open('파일명', '모드')

파일명에는 열고자 하는 파일의 경로나 이름을 입력하고, 모드를 통해 파일을 어떻게 사용할지를 결정합니다.

1.2 파일 모드 설명

파일을 열 때 사용할 수 있는 모드는 여러 가지가 있으며, 각각의 기능은 다음과 같습니다.

모드 설명
'r' 읽기 모드 (기본값), 파일이 존재하지 않으면 오류 발생
'w' 쓰기 모드, 기존 내용 삭제 후 새로 작성
'a' 추가 모드, 기존 내용 뒤에 새로운 내용 추가
'b' 바이너리 모드, 이미지, 오디오 파일 등 바이너리 데이터 처리
'r+' 읽기 및 쓰기 모드, 기존 내용 유지
'w+' 읽기 및 쓰기 모드, 기존 내용 삭제 후 새로 작성
'a+' 읽기 및 추가 모드, 기존 내용 뒤에 새로운 내용 추가

1.3 파일 열기 예제

(1) 텍스트 파일 읽기

file = open('example.txt', 'r')  # 읽기 모드로 파일 열기
content = file.read()  # 파일의 전체 내용 읽기
print(content)
file.close()  # 파일 닫기

(2) 텍스트 파일 쓰기

file = open('output.txt', 'w')  # 쓰기 모드로 파일 열기
file.write("안녕하세요, 파일에 내용을 작성합니다.")  # 파일에 텍스트 쓰기
file.close()  # 파일 닫기

(3) 텍스트 파일 내용 추가

file = open('output.txt', 'a')  # 추가 모드로 파일 열기
file.write("\n새로운 줄을 추가합니다.")  # 기존 내용 뒤에 추가
file.close()  # 파일 닫기

2. 파일을 닫는 이유: close() 함수의 중요성

파일을 열면 시스템 리소스가 할당되며, 파일을 닫지 않으면 메모리 누수(memory leak)데이터 손상 등의 문제가 발생할 수 있습니다. 따라서 파일 작업이 끝난 후에는 반드시 close() 함수를 호출하여 파일을 닫아야 합니다.

2.1 파일을 닫지 않으면 발생할 수 있는 문제

  • 데이터 손실 가능성: 쓰기 작업이 완료되지 않은 상태에서 파일을 닫지 않으면 일부 데이터가 저장되지 않을 수 있음
  • 시스템 자원 낭비: 파일이 계속 열린 상태로 유지되면 불필요한 메모리가 사용됨
  • 동시 접근 문제: 다른 프로그램에서 해당 파일을 사용하려고 할 때 파일이 열려 있으면 충돌 가능성 증가

2.2 파일 닫기 예제

file = open('data.txt', 'w')
file.write("파일을 닫는 것이 중요합니다.")
file.close()  # 반드시 파일을 닫아야 함

3. with 문을 활용한 안전한 파일 입출력

파이썬에서는 with 문을 사용하여 파일을 열고 닫는 과정을 자동으로 처리할 수 있습니다. with 문을 사용하면 블록이 종료될 때 자동으로 close()가 호출되므로, 보다 안전하고 간결한 코드 작성이 가능합니다.

3.1 with 문을 활용한 파일 읽기

with open('example.txt', 'r') as file:
    contents = file.read()  # 파일 읽기

print(contents)  # 파일의 내용 출력
# with 문이 종료되면 파일이 자동으로 닫힘

3.2 with 문을 활용한 파일 쓰기

with open('output.txt', 'w') as file:
    file.write("이 파일은 자동으로 닫힙니다.")  # 파일에 데이터 쓰기

3.3 with 문을 활용한 파일 추가 모드

with open('output.txt', 'a') as file:
    file.write("\n새로운 줄이 추가됩니다.")  # 기존 파일 내용 뒤에 새로운 줄 추가

4. 파일 입출력 실전 활용

4.1 여러 줄의 텍스트 읽기 (readlines() 활용)

with open('example.txt', 'r') as file:
    lines = file.readlines()  # 파일의 모든 줄을 리스트로 반환

for line in lines:
    print(line.strip())  # 각 줄을 출력 (공백 제거)

4.2 한 줄씩 읽기 (readline() 활용)

with open('example.txt', 'r') as file:
    while True:
        line = file.readline()  # 한 줄씩 읽기
        if not line:
            break
        print(line.strip())

4.3 JSON 파일 읽고 쓰기

JSON 파일은 데이터 저장 및 교환에 자주 사용되며, json 모듈을 활용하면 손쉽게 다룰 수 있습니다.

import json

# JSON 파일 저장
data = {'name': 'Alice', 'age': 25, 'city': 'Seoul'}
with open('data.json', 'w') as file:
    json.dump(data, file)

# JSON 파일 읽기
with open('data.json', 'r') as file:
    loaded_data = json.load(file)
    print(loaded_data)

5. 정리: 파일 입출력의 핵심 포인트

파일을 열 때 open() 함수를 사용하고 적절한 모드를 선택해야 합니다.
파일 작업 후에는 반드시 close()를 호출하여 자원을 해제해야 합니다.
with 문을 활용하면 파일을 자동으로 닫을 수 있어 코드가 더욱 안전하고 간결해집니다.
파일을 읽고 쓸 때 read(), readline(), readlines() 등의 메서드를 적절히 활용해야 합니다.
JSON 데이터 처리를 위해 json.dump()json.load()를 사용할 수 있습니다.

파일 입출력은 프로그래밍에서 매우 중요한 개념이며, 이를 적절히 활용하면 데이터 처리 및 저장을 효과적으로 수행할 수 있습니다. 앞으로 파일을 다룰 때 위의 내용을 활용하여 보다 안정적인 코드를 작성해 보세요! 🚀

728x90