ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python 마스터 시리즈 10화 – 파일 입출력(IO)과 경로 처리의 실전 패턴
    기술과 산업/언어 및 프레임워크 2025. 5. 15. 19:20
    728x90

    파이썬의 파일 입출력(IO) 기능은 데이터 저장, 로그 기록, 설정 파일 읽기 등 다양한 개발 업무에서 필수적으로 사용된다. 이번 글에서는 파일 open, read, write 기본 구조는 물론, 파일 입출력 시 자주 발생하는 예외 처리, 경로 관리, 대용량 파일 처리 패턴까지 심층 분석한다.

     


     

    1. 도입 – 파일 입출력은 데이터 중심 시스템의 핵심

     

    파일 입출력은 대부분의 프로그램이 반드시 거쳐야 하는 기능이다.

    초기에는 단순 텍스트 파일 처리로 시작하지만,

    실제 현업에서는 경로 문제, 인코딩 오류, 대용량 데이터 처리 등 다양한 문제가 복합적으로 발생한다.

     

    파이썬은 상대적으로 간결하고 직관적인 파일 처리 기능을 제공하지만,

    안정성과 확장성을 고려한 설계 관점에서 접근하는 것이 중요하다.

     


     

    2. 본문 – 파일 입출력과 경로 처리의 핵심

     

     

    2.1 파일 열기와 읽기

    file = open('example.txt', 'r')
    content = file.read()
    file.close()

     

    • 'r' : 읽기 모드
    • 파일 사용 후 반드시 close()를 호출해야 한다

     

     

    2.2 with 문을 이용한 안전한 파일 처리

    with open('example.txt', 'r') as file:
        content = file.read()

     

    • with 문을 사용하면 파일을 자동으로 닫아준다
    • 예외 발생 시에도 안전하게 자원이 정리된다
    • 실무에서는 반드시 with 문 사용을 권장

     


     

    2.3 파일 쓰기

    with open('output.txt', 'w') as file:
        file.write("Hello, world!")

     

    • 'w' : 기존 파일 덮어쓰기
    • 'a' : 기존 파일에 이어쓰기(append)

     

    추가 예시:

    with open('output.txt', 'a') as file:
        file.write("\n추가 내용")

     


     

    2.4 줄 단위로 파일 읽기

    with open('example.txt', 'r') as file:
        for line in file:
            print(line.strip())

     

    • 대용량 파일을 메모리에 모두 올리지 않고, 한 줄씩 처리할 때 유용

     


     

    2.5 바이너리 파일 읽고 쓰기

    with open('image.jpg', 'rb') as file:
        data = file.read()
    
    with open('copy.jpg', 'wb') as file:
        file.write(data)

     

    • 'rb', 'wb'는 바이너리 모드로 파일을 읽고 쓴다

     


     

    2.6 경로 처리 – os 모듈 활용

    import os
    
    current_dir = os.getcwd()                    # 현재 작업 디렉토리
    full_path = os.path.join(current_dir, 'data', 'file.txt')  # 경로 결합
    exists = os.path.exists(full_path)           # 파일 존재 여부 확인

     

    • 플랫폼에 관계없이 경로 결합을 안전하게 할 수 있다

     


     

    2.7 경로 처리 – pathlib 모듈 활용 (Python 3.4+)

    from pathlib import Path
    
    path = Path('data/file.txt')
    if path.exists():
        print(path.resolve())

     

    • 객체 지향 방식으로 경로와 파일 처리를 더 직관적으로 할 수 있다
    • 최근 프로젝트에서는 os 대신 pathlib 사용이 증가하는 추세

     


     

    3. 인사이트 – 파일 처리 시 반드시 고려해야 할 설계 요소

     

    파일 입출력은 매우 단순한 기능 같지만,

    대부분의 오류와 장애는 입출력 처리에서 발생한다.

     

    다음은 실무에서 반드시 체크해야 하는 파일 처리 설계 기준이다.

    고려 사항설명

    파일 존재 여부 사전 확인 os.path.exists() 또는 Path.exists() 활용
    인코딩 명시 텍스트 파일은 반드시 encoding='utf-8' 사용
    예외 처리 try-exceptFileNotFoundError, PermissionError 등 대비
    대용량 처리 한 번에 읽지 말고 for line in file: 방식으로 처리
    파일 닫기 with 문을 사용하여 자동으로 닫도록 설계
    플랫폼 독립 경로 처리 os.path.join() 또는 pathlib 적극 활용

    이러한 기준을 습관처럼 적용하면,

    코드 품질과 시스템 안정성을 동시에 확보할 수 있다.

     


     

    4. 정리

     

    • 파이썬의 파일 입출력은 직관적이지만, 반드시 with 문을 통한 안전한 자원 관리를 습관화해야 한다
    • 파일 입출력 시 인코딩, 예외 처리, 경로 처리, 대용량 데이터 처리까지 종합적으로 고려해야 실무에서 문제를 예방할 수 있다
    • 경로 처리는 os 또는 pathlib을 활용해 플랫폼 독립성과 가독성을 모두 확보하는 것이 바람직하다
    728x90
Designed by Tistory.