본문으로 건너뛰기

UZU Dev LogoUZU Dev LogoUZU-DEV

[Python] 파일 입출력

파일 열기 · 쓰기 · 읽기와 with문, 포인터, 복사 예제를 정리한 글

2025년 9월 12일

[Python] 파일 입출력 썸네일

1. 파일 열기와 닫기

파이썬은 open() 함수를 사용해 파일을 열고, 작업이 끝나면 close()로 닫는다.

f = open("example.txt", "w", encoding="utf-8")
f.write("Hello File I/O")
f.close()
  • open("파일명", "모드", encoding="utf-8")
  • close() : 파일 리소스를 반드시 해제해야 함
파일 모드 종류
  • "r" : 읽기 (기본값)
  • "w" : 쓰기 (기존 내용 삭제 후 새로 작성)
  • "a" : 추가 (기존 내용 뒤에 이어쓰기)
  • "b" : 바이너리 모드 (이미지, 동영상 등 텍스트가 아닌 파일)

2. with문을 이용한 파일 처리

파일을 열고 닫는 과정을 자동으로 처리할 수 있다.

with open("example.txt", "w", encoding="utf-8") as f:
    f.write("Hello with")
# 블록 종료 시 자동으로 close() 실행

3. 파일 쓰기

3.1 한 줄 쓰기
with open("example.txt", "w", encoding="utf-8") as f:
    f.write("첫 번째 줄\n")
    f.write("두 번째 줄\n")
3.2 여러 줄 쓰기
lines = ["Python\n", "AI\n", "IoT\n"]

with open("example.txt", "w", encoding="utf-8") as f:
    f.writelines(lines)
  • write() : 문자열 하나 쓰기
  • writelines() : 문자열 리스트를 한 번에 쓰기

4. 파일 읽기

4.1 파일 전체 읽기
with open("example.txt", "r", encoding="utf-8") as f:
    data = f.read()
    print(data)
4.2 한 줄씩 읽기
with open("example.txt", "r", encoding="utf-8") as f:
    line1 = f.readline()
    line2 = f.readline()
    print(line1, line2)
4.3 모든 줄 읽기 (리스트 반환)
with open("example.txt", "r", encoding="utf-8") as f:
    lines = f.readlines()
    for line in lines:
        print(line.strip())
  • read() : 전체 내용 읽기
  • readline() : 한 줄씩 읽기
  • readlines() : 모든 줄을 리스트로 반환

5. 파일 포인터

파일은 내부적으로 읽기/쓰기 위치를 기억하는 포인터를 가진다.

with open("example.txt", "r", encoding="utf-8") as f:
    print(f.tell())     # 현재 위치 확인
    f.seek(0)           # 파일의 처음으로 이동
    print(f.readline()) # 첫 줄 읽기
  • tell() : 현재 포인터 위치 반환
  • seek(offset) : 포인터를 특정 위치로 이동

6. 파일 복사 예제

with open("source.txt", "r", encoding="utf-8") as src:
    with open("copy.txt", "w", encoding="utf-8") as dst:
        for line in src:
            dst.write(line)
  • 한 줄씩 읽어 새로운 파일에 기록
  • 대용량 파일도 효율적으로 처리 가능

[Python] 파일 입출력