본문으로 바로가기
검색
회원가입로그인

제13장: 파일 다루기

Chapter 13: 파일 다루기의 기초 – 파이썬 파일 입출력

프로그램이 컴퓨터와 실질적으로 소통하는 순간은 파일을 읽거나 쓰는 순간입니다. 데이터를 메모리에 잠깐 저장하는 것을 넘어, 파일에 보관하면 언제든 다시 꺼내 쓸 수 있죠. 이 장에서는 파이썬이 어떻게 파일과 대화하는지, 그 핵심 원리를 차근차근 살펴봅니다.

파일 열기와 닫기: 첫걸음

파이썬은 open() 함수를 통해 파일문을 엽니다. 파일 이름(경로)과 어떻게 다룰지 정하는 모드(읽기, 쓰기 등)를 함께 알려주면 됩니다. 파일을 읽고 쓸 때마다 꼭 닫아 주는 것이 좋은 습관입니다. 직접 닫지 않아도, with 구문을 쓰면 자동 정리가 가능합니다.

data_file = open('data.txt', 'r')  # 읽기 모드로 파일 열기
# ...파일 작업...
data_file.close()

혹은 이렇게 더 안전하게 활용할 수도 있습니다:

with open('data.txt', 'w') as f:
    f.write('파이썬 파일 입출력 연습')
# with 블록을 빠져나가면 파일이 자동으로 닫힘

다양한 파일모드: 읽기, 쓰기, 추가하기

open() 함수의 두 번째 인자는 그 파일을 어떻게 다룰지 결정합니다.

  • 'r': 읽기 모드(파일이 있어야 함)

  • 'w': 쓰기 모드(기존 내용은 삭제, 없으면 새로 만듦)

  • 'a': 이어쓰기 모드(기존 끝에 추가)

  • 'b': 바이너리 모드(이미지 등 비텍스트 파일용)

파일에 데이터 써 보기

파일에 글을 남길 때는 write()를 사용합니다.

with open('hello.txt', 'w', encoding='utf-8') as f:
    f.write('안녕하세요!\n')
    f.write('파일에 텍스트를 남깁니다.')

문장이 끝날 때마다 줄바꿈 \n을 꼭 넣어주어야 실제로 다음 줄로 내려갑니다.

파일에서 데이터 읽기

파일 내용을 읽어오는 방법은 여러 가지입니다. 전체를 한 번에 읽으려면 read(), 한 줄씩 읽으려면 readline(), 모든 줄을 리스트로 만들고 싶다면 readlines()를 씁니다.

with open('hello.txt', 'r', encoding='utf-8') as f:
    all_text = f.read()
    print(all_text)
with open('hello.txt', 'r', encoding='utf-8') as f:
    for line in f:  # 파일 객체 자체가 반복 가능
        print(line.strip())  # 줄바꿈 문자 제거

실습: 원하는 단어 찾기

텍스트 파일에서 특정 단어가 들어있는 줄을 찾아볼 수도 있습니다. 다음은 실전 예시입니다.

with open('hello.txt', 'r', encoding='utf-8') as f:
    for num, line in enumerate(f, 1):
        if '파이썬' in line:
            print(f"{num}줄: {line.strip()}")

파일 작업 시 주의할 점

경로를 잘못 적으면 파일을 못 찾거나 예상치 못한 위치에 파일이 생성될 수 있습니다. 한글이나 특수문자가 있는 파일의 경우, 인코딩을 utf-8로 명시하는 것도 잊지 마세요. 만일 파일이 없는 경우나 권한이 없는 상황 등에서는 오류가 생길 수 있으니, try-except로 미리 대비해두면 프로그램이 멈추지 않게 설계할 수 있습니다.


파이썬 파일 입출력은 실제 프로젝트에서 반드시 쓰이는 필수 능력입니다. 읽기, 쓰기, 다양한 모드와 에러 처리까지 하나씩 익히면서 자신만의 데이터 저장 세계를 넓혀보세요.