파일 모드에 붙이는 'b' 수정자는 해당 파일을 바이너리(binary) 모드로 열도록 지정하는 옵션입니다. 바이너리 파일이란 사람이 읽을 수 있는 문자로 구성되지 않은 형식의 파일을 말합니다. 대표적인 예로 JPEG나 GIF 같은 이미지 파일, MP3 같은 오디오 파일, 그리고 Word나 PDF처럼 바이너리 형식으로 저장된 문서 파일 등이 있습니다.
텍스트 모드와 바이너리 모드의 차이
Python에서는 별도의 설정 없이 파일을 열면 기본적으로 텍스트(text) 모드가 적용됩니다. 텍스트 모드는 파일 내용을 문자열(str)로 읽고 쓰며, 운영체제에 따라 줄바꿈 문자(\n, \r\n)를 자동으로 변환합니다. 반면 바이너리 모드는 파일 내용을 그대로 바이트(bytes) 단위로 다루기 때문에 이러한 변환이 일어나지 않습니다.
따라서 이미지, 오디오, PDF 등 텍스트가 아닌 데이터를 다룰 때는 반드시 바이너리 모드를 사용해야 파일이 손상되지 않습니다.
사용 방법
바이너리 모드로 파일을 열려면 기존 모드 문자에 'b'를 추가하면 됩니다. 예를 들어 읽기 모드는 'rb', 쓰기 모드는 'wb'처럼 작성합니다.
예제 코드
f = open('my_file', 'rb')
file_content = f.read()
f.close()위 코드는 my_file을 바이너리 읽기 모드('rb')로 열어 파일 전체 내용을 읽은 뒤, 그 결과를 file_content 변수에 저장하고 파일을 닫습니다. 이때 file_content에는 문자열이 아닌 bytes 객체가 저장됩니다.
with 문을 활용한 개선된 예제
with open('my_file', 'rb') as f:
file_content = f.read()with 문을 사용하면 블록이 끝날 때 파일이 자동으로 닫히므로, f.close()를 직접 호출하지 않아도 되어 더 안전하고 깔끔한 코드를 작성할 수 있습니다.