Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 바이너리 데이터를 파일에 쓰는 방법 완벽 가이드

바이너리(binary) 파일이란 사람이 읽을 수 있는 문자가 아닌 형식으로 구성된 파일을 의미합니다. 대표적인 예로 JPEG나 GIF 같은 이미지 파일, MP3 같은 오디오 파일, 그리고 Word나 PDF처럼 이진 형식으로 저장되는 문서 파일 등이 있습니다.

Python에서 바이너리 모드로 파일 열기

Python에서는 open() 함수로 파일을 열 때 기본적으로 텍스트 모드(text mode)가 적용됩니다. 따라서 파일을 바이너리 모드로 다루려면 모드를 지정하는 문자열에 'b'를 추가해야 합니다. 예를 들어 쓰기 모드라면 'wb', 읽기 모드라면 'rb', 읽기와 쓰기를 동시에 하려면 'w+b'처럼 지정할 수 있습니다.

예제 코드

f = open('my_file', 'w+b')
byte_arr = [120, 3, 255, 0, 100]
binary_format = bytearray(byte_arr)
f.write(binary_format)
f.close()

코드 설명

위 코드는 my_file이라는 파일을 바이너리 쓰기 모드('w+b')로 엽니다. 정수 리스트인 byte_arrbytearray()를 통해 바이트 객체로 변환되며, write() 메서드를 호출하면 해당 바이트들이 그대로 파일에 기록됩니다. 마지막에는 close()를 호출하여 파일을 안전하게 닫아줍니다.

더 안전한 작성 방법: with 문 활용

파일을 명시적으로 닫지 않아도 되도록 with 문을 사용하면 코드가 더 간결하고 안전해집니다.

byte_arr = [120, 3, 255, 0, 100]

with open('my_file', 'wb') as f:
    f.write(bytearray(byte_arr))

with 블록이 끝나면 파일이 자동으로 닫히므로, 리소스 누수를 걱정할 필요가 없습니다. 바이너리 데이터를 다룰 때는 반드시 모드에 'b'를 포함시켜야 하며, 그렇지 않으면 Python이 텍스트 인코딩 처리를 시도하다가 오류가 발생할 수 있습니다.