Skip to main content

파일 입출력과 모듈 사용하기

지금까지의 파이썬은 주로 화면에 보여 주고, 입력을 받고, 계산하고, 판단하고, 반복하는 연습장이었습니다. 그런데 프로그램이 실행이 끝나는 순간 모든 내용이 사라진다면 조금 아쉽습니다. 열심히 만든 결과를 저장하고, 다음에 다시 불러오고, 이미 만들어진 좋은 도구를 가져다 쓸 수 있어야 비로소 실전에 가까워집니다.

이번 장에서 배우는 파일 입출력과 모듈 사용은 바로 그 문을 열어 줍니다. 이 장부터 파이썬은 "문제 풀이용 언어"를 넘어, 메모를 남기고, 기록을 읽고, 기능을 확장하는 실용 도구가 됩니다.

쉽게 말해 파일은 프로그램의 기억장치이고, 모듈은 프로그램의 도구 상자입니다. 기억하고, 꺼내 쓰고, 기능을 늘릴 수 있게 되는 순간부터 코드는 훨씬 더 살아 있는 물건이 됩니다.

파일이 왜 필요할까

변수는 편리하지만 프로그램이 끝나면 대부분 함께 사라집니다. 예를 들어 이름 목록을 리스트에 저장해도 실행이 끝나면 다시 빈손이 됩니다.

names = ["민지", "서준", "하늘"]
print(names)

이 코드는 실행하는 동안에는 잘 작동합니다. 하지만 프로그램을 껐다가 다시 실행하면, 이전 결과를 기억하고 있지 않습니다.

그래서 파일이 필요합니다. 파일에 저장하면 프로그램이 끝나도 내용이 남아 있습니다. 메모장에 적어 두는 것과 비슷합니다. 프로그램은 필요할 때 파일을 열어 읽고, 새 내용을 덧붙이고, 다시 저장할 수 있습니다.1

이 차이는 생각보다 큽니다. 예를 들어 이런 것들이 가능해집니다.

  • 오늘 공부한 내용을 텍스트 파일에 저장하기

  • 사용자의 입력 결과를 기록으로 남기기

  • 설정값을 파일에서 읽어 오기

  • 여러 번 실행해도 누적되는 로그 만들기

이제부터 파이썬은 "한 번 실행하고 끝"이 아니라, 바깥세상과 연결되는 프로그램이 됩니다.

파일 열기의 기본: open()

파이썬에서 파일을 다루는 출발점은 open() 함수입니다. 이름 그대로 파일을 엽니다.12

가장 단순한 모습은 이렇습니다.

file = open("memo.txt", "r", encoding="utf-8")

첫 번째 값은 파일 이름 또는 경로이고, 두 번째 값은 모드(mode)입니다. 모드는 파일을 어떤 목적으로 열 것인지 알려 줍니다.12

처음 배우는 단계에서는 아래 몇 가지만 잘 기억하면 충분합니다.

  • "r" : 읽기 모드. 파일 내용을 읽습니다.

  • "w" : 쓰기 모드. 새로 쓰며, 기존 내용은 덮어씁니다.

  • "a" : 추가 모드. 파일 끝에 내용을 이어 씁니다.

  • "x" : 새 파일 만들기. 이미 있으면 실패합니다.

예를 들어 "w"는 편리하지만 조심해야 합니다.

file = open("memo.txt", "w", encoding="utf-8")

이렇게 열면 기존 파일이 있어도 내용이 지워질 수 있습니다. 초보자가 가장 많이 하는 파일 실수 중 하나가 바로 이것입니다. 메모를 살짝 추가하고 싶었는데, 통째로 새로 써 버리는 일이죠.

그래서 처음에는 이렇게 기억하면 좋습니다.

읽고 싶으면 r, 새로 쓰고 싶으면 w, 이어 쓰고 싶으면 a.

파일은 꼭 닫아야 할까

전통적인 방식으로는 파일을 열고, 작업을 하고, 닫습니다.

file = open("memo.txt", "r", encoding="utf-8")
content = file.read()
print(content)
file.close()

close()는 파일 사용을 마쳤다고 알려 주는 역할을 합니다. 파일을 닫지 않으면 자원이 낭비되거나, 쓰기 내용이 제대로 반영되지 않는 등 예상치 못한 문제가 생길 수 있습니다.13

하지만 사람은 깜빡합니다. 열심히 코드를 쓰다가 close()를 빼먹기 쉽습니다. 그래서 파이썬에서는 더 안전한 방법을 자주 씁니다.

가장 추천하는 방법: with open()

파일을 다룰 때 가장 많이 쓰는 방식은 with open()입니다.13

with open("memo.txt", "r", encoding="utf-8") as file:
    content = file.read()
    print(content)

이 방식의 장점은 아주 큽니다. with 블록이 끝나면 파일을 자동으로 닫아 줍니다. 중간에 오류가 나더라도 정리를 도와주기 때문에 훨씬 안전합니다.13

초보자 입장에서는 이렇게 외우면 됩니다.

파일은 가능하면 항상 with open()으로 열자.

이 한 줄 습관만 잘 들여도 파일 관련 실수를 많이 줄일 수 있습니다.

텍스트 파일 읽기: read()

가장 간단한 읽기 방법은 read()입니다. 파일 전체 내용을 한 번에 문자열로 가져옵니다.1

with open("memo.txt", "r", encoding="utf-8") as file:
    content = file.read()

print(content)

예를 들어 memo.txt에 이런 내용이 있다고 해 봅시다.

오늘은 파이썬 파일을 배웠다.
생각보다 재미있다.

그러면 content에는 그 전체가 하나의 문자열로 들어갑니다.

이 방식은 짧은 파일에는 아주 편합니다. 하지만 파일이 매우 크다면 메모리를 많이 사용할 수 있습니다.1

그래서 파일이 클 때는 다른 읽기 방법도 알아 두면 좋습니다.

한 줄씩 읽으면 더 실용적이다

텍스트 파일은 줄 단위로 다루는 일이 많습니다. 예를 들어 출석 명단, 메모 목록, 할 일 목록은 보통 한 줄에 하나씩 적히죠.

이럴 때는 파일을 반복문으로 읽으면 됩니다.1

with open("students.txt", "r", encoding="utf-8") as file:
    for line in file:
        print(line)

다만 이렇게 출력하면 줄 끝의 n 때문에 빈 줄처럼 보일 수 있습니다. 그럴 때는 strip()이나 rstrip()을 함께 씁니다.

with open("students.txt", "r", encoding="utf-8") as file:
    for line in file:
        print(line.strip())

strip()은 문자열 양쪽의 공백이나 줄바꿈 문자를 정리해 주는 메서드입니다. 파일을 읽을 때 정말 자주 등장합니다.

예를 들어 학생 이름 파일이 이렇다면,

민지
서준
하늘

코드는 이렇게 쓸 수 있습니다.

with open("students.txt", "r", encoding="utf-8") as file:
    for line in file:
        name = line.strip()
        print(f"출석 확인: {name}")

결과는 보기 좋게 나옵니다.

출석 확인: 민지
출석 확인: 서준
출석 확인: 하늘

이제 파일이 단순한 글뭉치가 아니라, 프로그램이 처리할 데이터처럼 느껴지기 시작합니다.

필요한 만큼만 읽기

read()는 괄호 안에 숫자를 넣으면 그만큼만 읽을 수도 있습니다.1

with open("memo.txt", "r", encoding="utf-8") as file:
    part = file.read(5)
    print(part)

이 방식은 초보 단계에서는 아주 자주 쓰이지는 않지만, "파일도 조금씩 나눠 읽을 수 있다"는 감각을 익히는 데 도움이 됩니다. 특히 큰 파일을 다룰 때 유용합니다.1

파일에 쓰기: write()

이제 저장해 봅시다. 파일에 내용을 쓰려면 보통 w 모드를 사용합니다.1

with open("memo.txt", "w", encoding="utf-8") as file:
    file.write("파이썬은 실용적이다.")

이 코드를 실행하면 memo.txt 파일이 만들어지거나, 이미 있다면 내용이 새로 바뀝니다.

여기서 아주 중요한 점이 있습니다.

write()는 자동으로 줄바꿈을 넣어 주지 않습니다.12

with open("memo.txt", "w", encoding="utf-8") as file:
    file.write("첫째 줄")
    file.write("둘째 줄")

결과는 이렇게 붙어서 저장됩니다.

첫째 줄둘째 줄

그래서 줄을 바꾸고 싶다면 직접 n을 넣어야 합니다.

with open("memo.txt", "w", encoding="utf-8") as file:
    file.write("첫째 줄n")
    file.write("둘째 줄n")

초보자에게는 이 부분이 꽤 자주 헷갈립니다. print()는 자동으로 줄을 바꿔 주지만, write()는 그렇지 않다는 점을 꼭 기억하세요.

이어 쓰기: a 모드

기존 내용을 지우지 않고 뒤에 붙이고 싶다면 a 모드를 씁니다.12

with open("log.txt", "a", encoding="utf-8") as file:
    file.write("프로그램을 실행했습니다.n")

이 코드를 여러 번 실행하면 log.txt에 같은 형식의 기록이 계속 쌓입니다.

이 기능은 정말 실용적입니다. 예를 들어,

  • 공부 기록 남기기

  • 사용자 입력 기록하기

  • 실행 시간이나 결과 저장하기

  • 간단한 일기 쓰기

같은 프로그램을 쉽게 만들 수 있습니다.

w는 새 공책에 다시 쓰기, a는 기존 공책 맨 뒤에 덧붙이기라고 생각하면 이해가 쉽습니다.

읽기와 쓰기를 함께 생각해 보기

파일을 다룰 때는 보통 이런 흐름으로 생각합니다.

먼저 파일에서 내용을 읽고, 필요한 가공을 한 다음, 결과를 다시 파일에 저장합니다. 이 과정은 데이터 처리의 기본 흐름입니다.

예를 들어 할 일 목록을 저장하는 간단한 프로그램은 이렇게 만들 수 있습니다.

todo = input("할 일을 입력하세요: ")

with open("todo.txt", "a", encoding="utf-8") as file:
    file.write(todo + "n")

print("할 일이 저장되었습니다.")

그리고 목록을 다시 보고 싶다면,

with open("todo.txt", "r", encoding="utf-8") as file:
    for line in file:
        print("-", line.strip())

이 짧은 코드만으로도 꽤 쓸 만한 작은 도구가 됩니다. 이게 바로 파일의 힘입니다. 프로그램이 실행될 때마다 기억을 이어 갈 수 있으니까요.

파일 경로를 이해하면 덜 헤맨다

파일을 열 때는 파일 이름만 쓰기도 하고, 경로까지 함께 쓰기도 합니다. 이때 경로(path)는 파일이 어디에 있는지 알려 주는 주소입니다.45

예를 들어 같은 폴더에 있다면 이렇게 간단히 쓸 수 있습니다.

with open("memo.txt", "r", encoding="utf-8") as file:
    print(file.read())

하지만 다른 폴더에 있다면 경로를 함께 써야 합니다.

with open("data/memo.txt", "r", encoding="utf-8") as file:
    print(file.read())

초보자가 자주 만나는 문제는 "분명 파일이 있는데 못 찾는다"는 상황입니다. 이럴 때는 파일 이름 오타, 폴더 위치, 현재 작업 폴더를 먼저 의심해야 합니다.

운영체제마다 경로 모양이 조금 다를 수 있어서, 나중에는 pathlib 모듈을 쓰면 더 편합니다.45

from pathlib import Path

file_path = Path("data") / "memo.txt"

with open(file_path, "r", encoding="utf-8") as file:
    print(file.read())

지금 단계에서는 pathlib를 완벽히 외울 필요는 없습니다. 다만 "파일 주소를 다루는 표준 도구가 있다"는 정도를 알아 두면 충분합니다.

한글이 깨지지 않게: encoding="utf-8"

텍스트 파일을 다룰 때는 인코딩(encoding)이라는 말을 자주 만나게 됩니다. 인코딩은 문자를 컴퓨터가 저장하는 방식이라고 생각하면 됩니다.14

한글이 들어간 파일은 인코딩이 맞지 않으면 글자가 깨져 보일 수 있습니다. 그래서 초보 단계부터 다음 습관을 추천합니다.

with open("memo.txt", "r", encoding="utf-8") as file:
    content = file.read()

또는 쓸 때도 마찬가지입니다.

with open("memo.txt", "w", encoding="utf-8") as file:
    file.write("안녕하세요n")

운영체제 기본 설정에 맡겨도 잘 될 때가 있지만, 나중에 환경이 바뀌면 예상치 못한 문제가 생길 수 있습니다. 그래서 텍스트 파일에서는 encoding="utf-8"을 습관처럼 붙이는 편이 좋습니다.14

파일 관련 오류는 친절하게 다루자

파일을 다룰 때는 오류가 꽤 자주 납니다. 대표적인 것이 FileNotFoundError입니다. 말 그대로 파일을 못 찾았다는 뜻입니다.16

with open("없는파일.txt", "r", encoding="utf-8") as file:
    print(file.read())

이런 상황에서는 9장에서 배운 예외 처리가 아주 유용합니다.

try:
    with open("없는파일.txt", "r", encoding="utf-8") as file:
        content = file.read()
        print(content)
except FileNotFoundError:
    print("파일을 찾을 수 없습니다. 이름이나 위치를 확인해 주세요.")

이 코드는 훨씬 친절합니다. 프로그램이 갑자기 멈추는 대신, 사용자가 무엇을 확인해야 하는지 알려 주니까요.

읽기 권한 문제, 경로 문제, 디스크 문제 같은 다른 입출력 관련 오류는 OSError 계열 예외로 만날 수 있습니다. 다만 초보 단계에서는 우선 FileNotFoundError를 가장 자주 보게 되고, 그다음에 필요할 때 PermissionError나 OSError를 차차 익혀도 충분합니다.6

큰 파일은 한꺼번에 읽지 않는 편이 좋다

짧은 메모 파일이라면 read()로 한 번에 읽어도 괜찮습니다. 하지만 로그 파일처럼 큰 파일은 통째로 읽는 것이 부담이 될 수 있습니다.1

그럴 때는 줄 단위로 처리하면 더 효율적입니다.

with open("big_log.txt", "r", encoding="utf-8") as file:
    for line in file:
        if "ERROR" in line:
            print(line.strip())

이 코드는 파일 전체를 한 덩어리로 들고 있지 않고, 한 줄씩 확인하면서 필요한 내용만 처리합니다. 초보자라도 이런 습관을 일찍 익히면 아주 좋습니다. "작동하기만 하는 코드"에서 "조금 더 똑똑한 코드"로 가는 첫걸음이기 때문입니다.

파일과 함께 자주 쓰는 표준 모듈들

이제 파일을 어느 정도 다룰 수 있게 되었으니, 다음 질문이 생깁니다.

"기본 파이썬만으로도 할 수 있는 일이 많을까?"

대답은 아주 힘차게 그렇다입니다. 파이썬에는 설치 없이 바로 쓸 수 있는 거대한 도구 모음이 함께 들어 있습니다. 이것을 표준 라이브러리라고 부릅니다.57

표준 라이브러리 안에는 정말 다양한 모듈이 있습니다. 날짜를 다루는 도구, 파일 경로를 다루는 도구, JSON을 읽는 도구, CSV를 읽는 도구, 무작위 숫자를 만드는 도구까지 들어 있습니다.57

즉, 파이썬은 처음부터 꽤 큰 공구 상자를 들고 오는 셈입니다.

모듈이란 무엇일까

모듈은 한마디로 파이썬 코드가 들어 있는 파일입니다. 함수, 변수, 클래스 같은 것을 모아 두고 다른 프로그램에서 불러다 쓸 수 있게 만든 것입니다.7

예를 들어 우리가 직접 만든 함수도 다른 파일에 모아 두면 모듈이 될 수 있습니다. 그리고 파이썬이 기본으로 제공하는 math, random, json, pathlib 같은 것들도 모두 모듈입니다.

모듈을 쓰는 이유는 분명합니다.

  • 같은 코드를 반복해서 쓰지 않아도 됩니다.

  • 코드를 기능별로 나눌 수 있습니다.

  • 이미 잘 만들어진 기능을 가져다 쓸 수 있습니다.

쉽게 말해, 모듈은 "매번 새로 만들지 말고 필요한 도구를 꺼내 쓰자"는 아이디어입니다.

모듈 가져오기: import

모듈을 사용하려면 import를 씁니다.7

import math

print(math.sqrt(25))

이 코드는 math 모듈을 불러오고, 그 안의 sqrt() 함수를 사용해 제곱근을 구합니다.

결과:

5.0

여기서 중요한 점은 sqrt()를 그냥 바로 쓰는 것이 아니라 math.sqrt()처럼 모듈 이름을 함께 쓴다는 것입니다. 이렇게 하면 어디서 온 기능인지 분명해져서 코드가 읽기 좋아집니다.7

필요한 것만 가져오기

가끔은 모듈 전체보다 필요한 기능 하나만 가져오고 싶을 때가 있습니다.

from math import sqrt

print(sqrt(49))

이 방식은 짧고 편합니다. 하지만 처음에는 import math처럼 모듈 이름을 함께 쓰는 방식이 더 읽기 쉽고 헷갈림이 적습니다.

그리고 이런 방식은 피하는 편이 좋습니다.

from math import *

이 방법은 편해 보이지만, 어떤 이름이 들어왔는지 흐려져서 코드를 읽기 어려워질 수 있습니다.7

초보자일수록 분명한 코드가 더 좋습니다.

이름을 바꿔서 가져오기: as

모듈 이름이 길거나 자주 써야 할 때는 별명을 붙일 수 있습니다.7

import math as m

print(m.pi)

또는 함수에도 별명을 줄 수 있습니다.

from math import sqrt as root

print(root(64))

이 기능은 유용하지만, 너무 제멋대로 줄이면 오히려 읽기 어려워질 수 있습니다. 널리 알려진 별명만 가볍게 쓰는 편이 좋습니다.

직접 체감하는 표준 모듈 예제

파일과 함께 자주 쓰이는 표준 모듈 몇 가지를 간단히 맛보겠습니다.

datetime로 시간 찍기

기록 파일에는 언제 저장했는지 함께 적는 일이 많습니다.

from datetime import datetime

now = datetime.now()
print(now)

이 값을 파일에 저장하면 "언제 기록한 메모인지" 알 수 있습니다.

json으로 구조화된 데이터 다루기

사람이 읽기 좋은 텍스트 파일 말고, 프로그램끼리 데이터를 주고받기 좋은 형식도 있습니다. 대표적인 것이 JSON입니다. 파이썬에는 이를 위한 json 모듈이 기본으로 들어 있습니다.57

import json

student = {"name": "민지", "age": 14}

with open("student.json", "w", encoding="utf-8") as file:
    json.dump(student, file, ensure_ascii=False, indent=2)

읽을 때는 이렇게 합니다.

import json

with open("student.json", "r", encoding="utf-8") as file:
    data = json.load(file)

print(data["name"])

csv로 표 모양 데이터 다루기

엑셀처럼 행과 열로 된 데이터는 CSV 파일로 자주 저장합니다. 파이썬에는 이를 위한 csv 모듈도 있습니다.57

import csv

with open("scores.csv", "w", newline="", encoding="utf-8") as file:
    writer = csv.writer(file)
    writer.writerow(["이름", "점수"])
    writer.writerow(["민지", 95])
    writer.writerow(["서준", 88])

이제 파일 입출력과 모듈이 합쳐지면, 프로그램이 다룰 수 있는 세상이 훨씬 넓어진다는 감각이 올 것입니다.

나만의 모듈 만들기

모듈은 남이 만든 것만 쓰는 게 아닙니다. 우리가 직접 만들 수도 있습니다.7

예를 들어 greetings.py라는 파일을 만들고 이렇게 적어 봅시다.

def hello(name):
    return f"안녕하세요, {name}님!"

그리고 다른 파일에서 불러옵니다.

import greetings

print(greetings.hello("하늘"))

결과:

안녕하세요, 하늘님!

이렇게 하면 코드를 기능별로 나눌 수 있습니다. 나중에 프로그램이 길어졌을 때 특히 큰 도움이 됩니다.

예를 들어 계산 함수는 calc_tools.py, 인사 함수는 greetings.py, 메인 실행 코드는 main.py처럼 나눌 수 있습니다. 코드가 길어질수록 "한 파일에 다 몰아 넣기"보다 "역할별로 나누기"가 훨씬 편합니다.

외부 모듈은 무엇일까

표준 모듈은 파이썬 설치와 함께 오는 도구입니다. 반면 외부 모듈은 필요할 때 따로 설치해서 쓰는 도구입니다. 보통 PyPI라는 저장소에서 pip로 설치합니다.89

대표적인 예로 requests는 웹에서 데이터를 가져올 때 많이 쓰는 외부 모듈입니다.8

설치는 보통 터미널에서 이렇게 합니다.

pip install requests

그리고 파이썬 코드에서는 이렇게 사용합니다.

import requests

response = requests.get("https://www.example.com")
print(response.status_code)

물론 이 코드는 인터넷 연결과 설치 환경이 필요합니다. 그래서 처음에는 "외부 모듈은 파이썬 기본 도구에 없는 기능을 추가하는 부품" 정도로 이해하면 충분합니다.

표준 모듈과 외부 모듈, 무엇이 다를까

둘의 차이는 생각보다 단순합니다.

표준 모듈은 바로 사용 가능, 외부 모듈은 설치 후 사용입니다.59

처음 공부할 때는 이런 기준으로 생각하면 좋습니다.

먼저 표준 모듈로 해결할 수 있는지 본다. 표준 모듈로 충분하면 설치 없이 바로 쓸 수 있어서 편합니다. 정말 필요한 기능이 없을 때 외부 모듈을 살펴보면 됩니다.59

예를 들어 JSON 처리, CSV 처리, 파일 경로 처리 같은 것은 표준 모듈만으로도 충분히 잘 됩니다.57

외부 모듈을 쓸 때의 기본 예절

외부 모듈은 강력하지만 몇 가지 습관을 함께 들이면 좋습니다.

첫째, 무턱대고 많이 설치하지 말고 정말 필요한 것만 씁니다.

둘째, 프로젝트별로 환경을 나누는 가상 환경(virtual environment)을 쓰면 좋습니다.9

셋째, 문서를 보고 기본 사용법을 확인하는 습관을 들입니다.

가상 환경은 이런 식으로 만들 수 있습니다.9

python -m venv venv

이 기능은 지금 당장 완벽히 다루지 못해도 괜찮습니다. 다만 나중에 프로젝트가 커질수록 "환경을 분리하는 습관"이 아주 중요해진다는 점만 기억해 두세요.

작은 실전 예제: 공부 기록 저장기

이제 파일과 표준 모듈을 함께 써서 제법 실용적인 프로그램을 만들어 보겠습니다. 오늘 공부한 내용을 시간과 함께 저장하는 프로그램입니다.

from datetime import datetime

study = input("오늘 공부한 내용을 입력하세요: ")
now = datetime.now()
record = f"[{now.strftime('%Y-%m-%d %H:%M:%S')}] {study}n"

with open("study_log.txt", "a", encoding="utf-8") as file:
    file.write(record)

print("공부 기록이 저장되었습니다.")

이 프로그램은 꽤 멋집니다.

사용자에게 공부 내용을 입력받고, 현재 시각을 가져오고, 문자열로 정리한 뒤, 파일 끝에 덧붙입니다. 실행할수록 기록이 차곡차곡 쌓입니다.

파일 내용을 읽어 보는 프로그램도 만들 수 있습니다.

try:
    with open("study_log.txt", "r", encoding="utf-8") as file:
        print("===== 공부 기록 =====")
        for line in file:
            print(line.strip())
except FileNotFoundError:
    print("아직 저장된 공부 기록이 없습니다.")

이 정도만 만들어도 "내가 쓸 만한 프로그램"이라는 느낌이 확 살아납니다.

초보자가 자주 하는 실수

이 장에서도 자주 나오는 실수가 있습니다.

  • w 모드로 열어서 기존 내용을 지워 버리는 실수

  • write()가 줄바꿈을 자동으로 해 줄 거라 생각하는 실수

  • 파일 경로를 잘못 적는 실수

  • 한글 파일인데 인코딩을 신경 쓰지 않는 실수

  • import만 해 놓고 모듈 이름 없이 함수를 바로 쓰려는 실수

  • from module import *를 남발하는 실수

예를 들어 이런 코드는 실수의 대표입니다.

with open("log.txt", "w", encoding="utf-8") as file:
    file.write("실행함n")

이걸 여러 번 실행하면 매번 새로 써서 이전 기록이 사라집니다. 기록을 쌓고 싶다면 a를 써야 합니다.

with open("log.txt", "a", encoding="utf-8") as file:
    file.write("실행함n")

아주 사소한 차이지만 결과는 완전히 다릅니다.

이 장에서 꼭 기억할 문장

파일은 프로그램의 기억입니다.

모듈은 프로그램의 도구 상자입니다.

이 두 문장만 정확히 이해해도 이번 장의 핵심은 거의 잡은 셈입니다.

파일을 배우면 프로그램이 실행이 끝난 뒤에도 결과를 남길 수 있습니다. 모듈을 배우면 이미 만들어진 기능을 재사용할 수 있습니다. 그리고 이 둘이 만나면 파이썬은 단순한 연습용 언어를 넘어, 실제로 무언가를 만들어 쓰는 언어가 됩니다.

마무리

이번 장에서는 텍스트 파일을 읽고 쓰는 기본 방법과, 표준 모듈과 외부 모듈을 활용하는 기초를 배웠습니다.

정리하면 이렇습니다.

파일을 다룰 때는 open()으로 열 수 있고, 가능하면 with open()을 쓰는 것이 안전합니다. 읽기에는 r, 새로 쓰기에는 w, 이어 쓰기에는 a를 자주 씁니다. read()로 전체를 읽을 수 있고, 반복문으로 한 줄씩 읽는 방법도 중요합니다. write()는 줄바꿈을 자동으로 넣지 않으므로 n을 직접 써야 합니다. 텍스트 파일에서는 encoding="utf-8"을 붙이는 습관이 좋습니다.

또한 모듈은 다른 사람이 만든 도구이기도 하고, 내가 만든 코드를 정리하는 방법이기도 합니다. import를 통해 표준 모듈을 불러와 쓸 수 있고, 필요하면 pip로 외부 모듈도 설치할 수 있습니다.

여기까지 오면 파이썬은 더 이상 종이 위의 연습이 아닙니다. 파일에 기록을 남기고, 시간을 읽어 오고, 데이터를 구조화하고, 다른 기능을 끌어다 쓰는 순간부터 파이썬은 생활 속 도구가 됩니다.

다음 장에서는 한 단계 더 나아가 클래스와 객체를 배웁니다. 지금까지는 기능을 만들고 연결했다면, 다음부터는 더 큰 프로그램을 체계적으로 설계하는 방법을 만나게 됩니다.

참고

1Reading and Writing Files — Python 3 documentation

2open() — Python 3 documentation

3contextlib — Utilities for with-statement contexts

4pathlib — Object-oriented filesystem paths

5The Python Standard Library — Python 3 documentation

6Built-in Exceptions — Python 3 documentation

7Modules — Python 3 documentation

8requests: HTTP for Humans

9venv — Creation of virtual environments

책 목록

처음부터 실전까지, 진짜 쉬운 파이썬 교과서

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기