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라는 클래스입니다. 이 할아버지 밑으로 크게 세 명의 자식이 있습니다.
RawIOBase: 가장 밑바닥, 가공되지 않은 기계어 자체를 다룰 때 아주 가끔 씁니다.BufferedIOBase: 바이트(Bytes) 단위의 데이터를 한꺼번에 묶음(버퍼)으로 빠르게 처리하는 녀석입니다. 이미지/음악 파일을 열면 출동합니다.TextIOBase: 이 바이트를 우리가 읽을 수 있는 한글, 알파벳 등 ‘텍스트’로 멋지게 번역해주는 똑똑한 자식입니다. 우리가.txt파일을 열면 이 녀석이 일합니다.
결국, 우리가 무심코 open('note.txt', 'rt')라고 치는 순간 파이썬은 내부에서 TextIOBase 구조를 빌려와 여러분에게 가장 편안한 텍스트 편집 기능을 제공하는 것입니다!
서브목차