파이썬 파일 이진 모드 오류 (Python file binary mode error) 알아보기.

파이썬 파일 이진 모드 오류: 이유와 해결법

파이썬은 기본적으로 파일 입출력을 통해 데이터를 다룹니다. 파일을 읽어들이거나 새로운 파일을 생성하여 내용을 저장하는 등 다양한 기능을 제공합니다. 그중에서도 이진 모드는 바이너리 형식으로 파일을 다루는 기능입니다. 하지만 이진 모드를 사용할 때 발생하는 오류가 있습니다. 이번 포스팅에서는 이진 모드 오류가 발생하는 이유와 해결법에 대해 알아보겠습니다.

파이썬 파일 모드란?

파이썬에서 파일 입출력을 하기 위해서는 파일 모드를 지정해야 합니다. 파일 모드란 파일을 어떤 방식으로 열 것인지를 결정하는 옵션입니다. 다음과 같은 모드들이 있습니다.

  • r : 읽기 모드 (read)
  • w : 쓰기 모드 (write)
  • a : 추가 모드 (append)
  • x : 새로운 파일 생성 (exclusive creation)
  • b : 이진 모드 (binary)

파일 모드를 지정하지 않으면 기본값으로 읽기 모드 (r)가 지정됩니다.

이진 모드 오류란?

이진 모드를 사용하면 파일을 바이너리 형식으로 열 수 있습니다. 이때, 유니코드 문자열 대신 바이트 문자열을 사용합니다. 그러나 이진 모드에서 파일을 열 때, encoding 파라미터를 사용할 수 없습니다. 따라서 이진 모드에서는 인코딩 문제가 발생할 수 있습니다.

이진 모드의 오류 메시지는 다음과 같습니다.

TypeError: write() argument must be str, not bytes

위와 같은 오류는 이진 모드를 사용할 때 문자열이 아닌 바이트 문자열을 사용해야 한다는 뜻입니다. 만약에 문자열로 바로 파일에 쓰려고 하면 위와 같은 오류가 발생합니다.

이진 모드 오류 해결법

이진 모드 오류는 바이트 문자열을 사용해야 한다는 것입니다. 만약에 문자열을 파일에 쓰려면 문자열을 바이트 문자열로 변환해야 합니다. 이렇게 변환하는 방법은 다음과 같습니다.

python
with open('file.bin', 'wb') as f:
f.write(b'this is binary data')

또한, 이진 모드에서 파일을 읽어 들일 때도 데이터를 바이트 문자열로 읽어야 합니다.

python
with open('file.bin', 'rb') as f:
data = f.read()

이렇게 이진 모드를 사용할 때, 바이트 문자열을 사용하면 오류를 피할 수 있습니다.

마무리

파이썬 파일 입출력에서 이진 모드를 사용할 때 발생하는 오류에 대해서 알아보았습니다. 이진 모드를 사용할 때는 반드시 바이트 문자열을 사용해야 하며, 그렇지 않으면 오류가 발생합니다. 바이트 문자열을 사용하여 이진 모드를 적절히 활용하면 데이터 처리에 편리한 파이썬 코드를 작성할 수 있습니다.