1. 창고의 규칙: 파일 IO의 기초

컴퓨터의 창고에서 파일을 꺼내오거나(Input) 새 파일을 집어넣는(Output) 작업을 합쳐서 IO 처리(Input/Output) 라고 부릅니다.

1.1 파이썬 도서관의 열람증: 파일 모드(Mode)

파일을 열 때는 파이썬에게 어떤 목적으로 열 것인지 ‘목적’을 확실히 말해줘야 문을 열어줍니다. 이를 파일 모드(File Mode)라고 합니다.

  • r (Read, 읽기): 책을 눈으로만 읽을 때 씁니다. (파일이 없으면 “없는데요?” 하고 에러를 냅니다)
  • w (Write, 쓰기): 새 공책을 사서 글을 씁니다. 만약 이미 있는 공책(파일)이라면 내용을 다 찢어버리고(삭제하고) 처음부터 새로 씁니다!
  • a (Append, 이어 쓰기): 이미 글씨가 써진 공책의 맨 뒷장부터 이어서 글을 적습니다.
  • x (eXclusive, 오직 새 것만): 이미 그 이름의 파일이 있으면 절대로 열지 않고 화를 내는 모드입니다. 덮어쓰기 사고를 막을 때 씁니다.

여기에 추가로 데이터의 ‘생김새’에 따라 두 가지 모드가 더 붙습니다.

  • t (Text): 우리가 읽을 수 있는 обы 글자(예: “안녕”) 모드! (안 쓰면 무조건 기본으로 설정됩니다)
  • b (Binary): 기계어(바이트) 모드. 사진이나 음악을 열 때 씁니다.

합체 예시: rt (글자를 읽기 모드로 열기), wb (이미지를 쓰기 모드로 열기)


1.2 파이썬의 IO 클래스 족보 (IOBase)

우리가 파일을 열면(Open), 파이썬은 내부적으로 멋진 객체 도구들을 생성해 줍니다. 모든 파일 도구의 왕조본가는 io.IOBase라는 클래스입니다. 이 할아버지 밑으로 크게 세 명의 자식이 있습니다.

  1. RawIOBase : 가장 밑바닥, 가공되지 않은 기계어 자체를 다룰 때 아주 가끔 씁니다.
  2. BufferedIOBase : 바이트(Bytes) 단위의 데이터를 한꺼번에 묶음(버퍼)으로 빠르게 처리하는 녀석입니다. 이미지/음악 파일을 열면 출동합니다.
  3. TextIOBase : 이 바이트를 우리가 읽을 수 있는 한글, 알파벳 등 ‘텍스트’로 멋지게 번역해주는 똑똑한 자식입니다. 우리가 .txt 파일을 열면 이 녀석이 일합니다.

결국, 우리가 무심코 open('note.txt', 'rt')라고 치는 순간 파이썬은 내부에서 TextIOBase 구조를 빌려와 여러분에게 가장 편안한 텍스트 편집 기능을 제공하는 것입니다!

서브목차