이진 데이터에는 행 끝과 같은 내용이 없습니다.
이진 파일에는 문자 \ n을 포함한 모든 가능한 문자가 포함될 수 있습니다. 파이썬이 암시 적으로 이진 파일의 문자를 다른 것으로 변환하는 것을 원하지 않습니다. 파이썬은 당신이 그렇게 말하지 않으면 바이너리 파일을 읽는 것을 모른다. 파이썬이 텍스트 파일을 읽을 때 자동으로 \ n 문자를 OS의 개행 문자로 변환합니다.이 문자는 Windows에서 \ n \ n입니다.
모든 컴퓨터 프로그래밍 언어에서 일하는 방식입니다.
또 다른 방법은 파일이 긴 일련의 바이트 (8 비트) 일 뿐이라는 것입니다. 바이트는 단지 정수입니다. 그리고 바이트는 정수가 될 수 있습니다. 바이트가 정수 10이면 문자 \ n의 아스키 코드이기도합니다. 파일의 바이트가 바이너리 데이터를 나타내는 경우 파이썬이 10을 읽어서 두 바이트 (13과 10)로 변환하는 것을 원하지 않습니다. 일반적으로 바이너리 데이터를 읽을 때 처음 두 바이트를 읽으려고합니다. 숫자를 나타내는 다음 다른 숫자를 나타내는 다음 4 바이트를 나타냅니다. 분명히 파이썬이 갑자기 바이트 중 하나를 2 바이트로 변환하면 두 가지 문제가 발생합니다. 1) 데이터를 변경하고 2) 모든 데이터 경계를 엉망이 될거야.
예 : 파일의 첫 번째 바이트가 개의 가중치를 나타내는 것으로 가정하고 바이트의 값이 10이라고 가정합니다. 다음 바이트는 개의 나이를 나타내며 그 값은 1입니다. 파이썬이 두 바이트 \ n에 아스키 코드는 10, 10, 13, 데이터 파이썬 손을 당신은 다음과 같이 표시됩니다
10 13 1
그리고 당신은에 대한 두 번째 바이트를 추출 할 때 강아지의 나이가되면 13 세가됩니다. 1
파일에는 '문자'가 포함되어 있지만 종종 거짓말이라고합니다. 컴퓨터는 문자를 저장할 수 없습니다. 그들은 단지 숫자를 저장할 수 있습니다. 따라서 파일은 일련의 긴 숫자 일뿐입니다. 파이썬이 그 숫자를 문자를 나타내는 아스키 코드로 취급한다면 파이썬이 텍스트를 줄 것이다.
"바이너리 모드를 사용할 때 ** 매우주의하십시오 **"가 아니라 "** 바이너리 모드를 사용하는 데 매우주의하십시오 ..."라고 읽습니다. 바이너리 모드는 안전합니다. – Matthias