본문으로 건너뛰기

교육 ·

비전공자 파이썬 파일 입출력 배우는 법, txt·csv 처리 기초

비전공자 파이썬 파일 입출력 배우는 법, 왜 필요할까요

엑셀 파일 자동화는 pandas나 openpyxl로 시작하지만, 실무에서는 로그 파일, 텍스트 명단, 설정 파일처럼 엑셀이 아닌 순수 텍스트 파일을 다뤄야 하는 순간이 자주 옵니다. 파이썬의 파일 입출력(File I/O)은 open 함수 하나로 텍스트 파일을 읽고 쓰는 가장 기본적인 기능이며, 이후 배우는 pandas나 csv 모듈도 결국 이 파일 입출력 개념 위에 서 있습니다. 오늘은 비전공자 실무자가 파일 입출력을 어떤 순서로, 어떤 예시로 익히면 좋을지 정리해 보겠습니다.

이미 엑셀 반복 업무를 파이썬으로 자동화하는 방법을 살펴보셨다면, 그 다음 단계로 텍스트 파일 처리를 익히면 자동화 범위가 훨씬 넓어집니다. 로그 파일 분석, 설정값 저장, 대량 텍스트 명단 처리 같은 업무가 모두 파일 입출력 위에서 돌아가기 때문입니다.

open 함수, 기본 구조부터 이해하기

파이썬에서 파일을 다루는 기본 함수는 open입니다. 파일 경로와 모드(읽기 r, 쓰기 w, 추가 a)를 지정해 파일 객체를 얻고, 그 객체로 내용을 읽거나 씁니다. 아래는 텍스트 파일을 읽는 가장 기본적인 형태입니다.

with open("명단.txt", "r", encoding="utf-8") as f:
    content = f.read()
    print(content)

여기서 with 문을 쓰는 이유가 중요합니다. open으로 연 파일은 반드시 close()로 닫아줘야 하는데, with 문을 쓰면 코드 블록이 끝나는 순간 자동으로 파일이 닫힙니다. 파일을 안 닫으면 다른 프로그램이 그 파일에 접근하지 못하거나, 데이터가 온전히 저장되지 않는 문제가 생길 수 있습니다. 실무에서는 open(…).close() 형태보다 with open(…) as f: 형태를 기본값으로 쓰는 것을 권장합니다.

한 줄씩 읽어야 할 때는 왜 readlines를 쓰나요

파일 전체를 한 번에 읽는 read() 대신, 줄 단위로 처리해야 하는 업무가 더 많습니다. readlines()는 파일의 각 줄을 리스트 형태로 반환하므로, 반복문과 함께 쓰면 줄마다 원하는 처리를 할 수 있습니다. 예를 들어 거래처 명단 텍스트 파일에서 이메일 주소만 뽑아내는 작업이 이렇게 가능합니다.

with open("거래처명단.txt", "r", encoding="utf-8") as f:
    lines = f.readlines()

emails = []
for line in lines:
    line = line.strip()
    if "@" in line:
        emails.append(line)

print(emails)

strip()을 함께 쓰는 이유는 각 줄 끝에 남아있는 줄바꿈 문자(\n)를 제거하기 위해서입니다. 이 부분을 빠뜨리면 이메일 주소 끝에 보이지 않는 문자가 붙어 이후 비교나 검색이 실패하는 경우가 종종 있습니다.

파일 쓰기, w 모드와 a 모드의 차이

파일을 쓸 때는 w(write)와 a(append) 두 모드를 구분해야 합니다. w 모드는 파일이 이미 있으면 내용을 전부 지우고 새로 쓰고, 파일이 없으면 새로 만듭니다. a 모드는 기존 내용 뒤에 이어서 추가합니다. 자동화 로그를 쌓는 스크립트라면 w 모드를 쓰는 순간 이전 로그가 모두 사라지므로 주의가 필요합니다.

with open("작업로그.txt", "a", encoding="utf-8") as f:
    f.write("2026-08-01 파일 정리 작업 완료\n")

이런 로그 기록 방식은 자동화 스크립트의 로그를 남기는 방법에서 다룬 내용과도 이어집니다. 자동화를 만든 뒤 무슨 일이 있었는지 추적하려면 결국 파일 입출력으로 기록을 남기는 습관이 필요합니다.

csv 파일은 open으로 바로 읽으면 안 되나요

csv 파일도 텍스트 파일이므로 open으로 열 수는 있지만, 쉼표로 구분된 값을 직접 split(”,“)으로 나누는 방식은 데이터 안에 쉼표가 포함된 경우(예: 주소, 설명 텍스트) 값이 엉뚱하게 잘리는 문제가 생깁니다. 그래서 csv 파일은 파이썬 표준 라이브러리인 csv 모듈을 쓰는 것이 안전합니다.

import csv

with open("주문목록.csv", "r", encoding="utf-8-sig") as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

encoding을 utf-8-sig로 지정하는 이유는 엑셀에서 저장한 csv 파일 앞부분에 BOM이라는 표시가 붙어있는 경우가 많은데, 이를 처리하지 않으면 첫 번째 컬럼 이름 앞에 이상한 문자가 붙어 나오기 때문입니다. 실무에서 엑셀로 저장한 csv를 파이썬으로 읽을 때 자주 겪는 문제이니 미리 알아두면 좋습니다.

파이썬 파일 입출력 핵심 정리

실무에서는 어떤 순서로 연습하면 좋을까요

먼저 메모장으로 간단한 txt 파일을 하나 만들어 open으로 읽고 출력해 보는 것부터 시작하는 것을 권합니다. 그다음 여러 줄로 이루어진 파일을 readlines로 읽어 특정 조건에 맞는 줄만 골라내는 연습을, 이후에는 처리 결과를 새 파일로 저장하는 쓰기 연습을 순서대로 해보면 자연스럽게 흐름이 잡힙니다. csv 모듈은 이 기본기를 익힌 뒤에 배워도 늦지 않습니다.

파일 경로를 다룰 때 자주 나오는 에러도 미리 알아두면 당황하지 않습니다. FileNotFoundError는 경로나 파일명이 틀렸을 때, UnicodeDecodeError는 encoding 설정이 파일의 실제 인코딩과 다를 때 발생합니다. 이런 에러 메시지를 읽는 법은 에러 메시지를 겁먹지 않고 읽는 방법에서 더 자세히 다루고 있으니 함께 참고하시면 좋습니다.

파일 입출력은 화려하지 않지만, 텍스트 로그 분석, 설정 파일 자동 생성, 대량 텍스트 데이터 전처리 같은 실무 자동화의 기초 체력이 되는 부분입니다. 픽셀앤코드는 이런 기초 문법부터 실제 업무에 맞춘 자동화 스크립트 제작까지, 비전공 실무자의 눈높이에 맞춘 IT 교육과 맞춤형 개발을 함께 지원하고 있습니다.