본문 바로가기
PYTHON/중급학습

[중급 6편] 파일 입출력 고급편과 예외 안전 처리.zip

by Kim.Sung 2025. 5. 13.

파이썬의 파일 입출력은 단순히 `open()` 함수로 시작되지만, 실무에서는 경로 처리, 인코딩 문제, 예외 대응, with-context 활용 등 다양한 고려 사항이 필요합니다. 이번 글에서는 텍스트/CSV/JSON 파일 입출력 고급 활용법과 안전한 예외처리 방법을 함께 정리합니다.

✅ 1. 파일 열기와 쓰기 기본

텍스트 파일을 열고 쓰는 기본 구문:

with open("example.txt", "w", encoding="utf-8") as f:
    f.write("파이썬 파일 입출력 연습입니다.\n")

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

→ with 구문을 쓰면 파일 자동 닫힘 처리됨

---

✅ 2. 파일 존재 여부 및 경로 처리

import os

file_path = "data/sample.txt"

if os.path.exists(file_path):
    print("파일이 존재합니다.")
else:
    print("해당 경로에 파일이 없습니다.")

# 디렉토리 자동 생성 예시
os.makedirs("data", exist_ok=True)

---

✅ 3. 예외 안전한 파일 처리

try:
    with open("없는파일.txt", "r", encoding="utf-8") as f:
        lines = f.readlines()
except FileNotFoundError:
    print("파일이 없습니다. 새로 생성합니다.")
    with open("없는파일.txt", "w") as f:
        f.write("초기 내용\n")

except Exception as e:
    print(f"예기치 못한 오류 발생: {e}")

---

✅ 4. CSV 파일 읽기/쓰기

import csv

# 쓰기
with open("users.csv", "w", newline='', encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(["이름", "나이"])
    writer.writerow(["홍길동", 30])

# 읽기
with open("users.csv", "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

---

✅ 5. JSON 파일 읽기/쓰기

import json

data = {"이름": "홍길동", "나이": 30}

# 저장
with open("user.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

# 로드
with open("user.json", "r", encoding="utf-8") as f:
    loaded = json.load(f)
    print(loaded["이름"])  # 홍길동

---

✅ 6. 실무 팁 정리

- 파일 입출력은 항상 `with open()` 사용 (자동 닫힘)
- CSV/JSON 등은 전용 라이브러리 적극 활용
- `os.path.exists`, `os.makedirs`로 경로 안전 처리
- `try-except`를 통해 오류 발생 시에도 예외 복구 설계
- 인코딩 문제는 항상 `encoding="utf-8"`로 명시

---

정리:  
단순한 파일 입출력도, 예외 처리와 결합하면 실무에서 신뢰할 수 있는 robust한 코드로 진화합니다.  
데이터를 다루는 모든 작업에서 기본이 되는 만큼, 이 편은 꼭 마스터하고 가야 합니다.