Python에서 이진 파일을 읽는 방법

How Read Binary Files Python



이진 데이터를 포함하는 파일을 이진 파일이라고 합니다. 포맷되거나 포맷되지 않은 바이너리 데이터는 바이너리 파일에 저장되며, 이 파일은 사람이 읽을 수 없으며 컴퓨터에서 직접 사용합니다. 한 위치에서 다른 위치로 읽거나 전송하기 위해 이진 파일이 필요한 경우 파일의 내용은 사람이 읽을 수 있는 형식으로 변환되거나 인코딩됩니다. 바이너리 파일의 확장자는 .bin입니다. 바이너리 파일의 내용은 내장 함수나 모듈을 사용하여 읽을 수 있습니다. 이 튜토리얼에서는 Python에서 바이너리 파일을 읽는 다양한 방법을 보여줍니다.

전제 조건:

이 튜토리얼의 예제를 확인하기 전에 예제 스크립트에서 사용할 하나 이상의 바이너리 파일을 만드는 것이 좋습니다. 두 개의 파이썬 파일의 스크립트는 두 개의 바이너리 파일을 생성하기 위해 아래에 주어졌습니다. binary1.py는 다음과 같은 바이너리 파일을 생성합니다. string.bin 문자열 데이터를 포함하고 binary2.py는 다음과 같은 바이너리 파일을 생성합니다. number_list.bin 숫자 데이터 목록이 포함됩니다.







바이너리1.py

# 파일 핸들러를 열어 바이너리 파일 생성

파일 핸들러= 열려있는('문자열.bin', 'ㅁ')

# 바이너리 파일에 두 줄의 텍스트 추가

파일 핸들러.쓰다(NS'리눅스힌트에 오신 것을 환영합니다.N파이썬 프로그래밍을 배우십시오.')

# 파일 핸들러 닫기

파일 핸들러.닫다()

바이너리2.py

# 파일 핸들러를 열어 바이너리 파일 생성

파일=열려있는('number_list.bin','ㅁ')

# 숫자 값 목록 선언

숫자=[10,30,오분의 사,60,70,85,99]

# 리스트를 배열로 변환

바레이=바이트 배열(숫자)

# 파일에 배열 쓰기

파일.쓰다(바레이)

파일.닫다()

예-1: 문자열 데이터의 바이너리 파일을 바이트 배열로 읽어들입니다.

파이썬에는 바이너리 파일을 읽는 많은 방법이 있습니다. 특정 바이트 수 또는 바이너리 파일의 전체 내용을 한 번에 읽을 수 있습니다. 다음 스크립트를 사용하여 python 파일을 만듭니다. NS open() 함수 을 여는 데 사용되었습니다. string.bin 읽기 위해. NS 읽기() 함수 while 루프 및 인쇄의 각 반복에서 파일에서 7자를 읽는 데 사용되었습니다. 다음으로, 읽기() 함수 나중에 인쇄될 바이너리 파일의 전체 내용을 읽기 위해 인수 없이 사용되었습니다.



# 읽을 바이너리 파일 열기

파일 핸들러= 열려있는('문자열.bin', 'rb')

# 바이너리 파일에서 처음 세 바이트를 읽습니다.

데이터 바이트=파일 핸들러.읽다(7)

인쇄('각 반복에서 3개의 문자를 인쇄합니다.')

# 파일의 나머지 부분을 읽기 위해 루프를 반복합니다.

동안데이터 바이트:

인쇄(데이터 바이트)

데이터 바이트=파일 핸들러.읽다(7)


# 전체 파일을 단일 바이트 문자열로 읽습니다.

~와 함께 열려있는('문자열.bin', 'rb') 같이fh:

콘텐츠=에프.읽다()

인쇄('바이너리 파일의 전체 내용 인쇄:')

인쇄(콘텐츠)

산출:

위의 스크립트를 실행하면 다음 출력이 나타납니다.

예-2: 문자열 데이터의 바이너리 파일을 배열로 읽어들입니다.

다음 스크립트를 사용하여 python 파일을 생성하여 이라는 바이너리 파일을 읽습니다. number_list.bin 이전에 생성되었습니다. 이 바이너리 파일에는 숫자 데이터 목록이 포함되어 있습니다. 앞의 예와 같이, open() 함수 스크립트에서 읽기 위해 바이너리 파일을 여는 데 사용했습니다. 다음으로 이진 파일에서 처음 5개의 숫자를 읽고 인쇄하기 전에 목록으로 변환합니다.

# 읽을 바이너리 파일 열기

파일 = 열려있는('number_list.bin', 'rb')

# 처음 5개의 숫자를 목록으로 읽습니다.

숫자= 목록(파일.읽다(5))

# 목록 인쇄

인쇄(숫자)

# 파일을 닫는다

파일.닫다()

산출:

위의 스크립트를 실행하면 다음 출력이 나타납니다. 이진 파일에는 7개의 숫자가 포함되어 있으며 처음 5개의 숫자는 출력에 인쇄되어 있습니다.

예-3: NumPy를 사용하여 바이너리 파일 읽기

다음을 사용하여 바이너리 파일을 만드는 방법 넘파이 배열 다음을 사용하여 목록으로 이진 파일의 내용을 읽습니다. 넘파이 모듈 튜토리얼의 이 부분에서 보여주었습니다. 아래 주어진 스크립트를 확인하기 전에 넘파이 모듈 터미널에서 명령을 실행하거나 넘파이 패키지 스크립트가 실행될 Python 편집기에서. NS tofile() 함수 텍스트 또는 이진 파일을 만드는 데 사용되며 fromfile() 함수 텍스트 또는 이진 파일을 읽어 배열을 만드는 데 사용됩니다.

tofile() 구문:

ndarray.파일로(파일,9월='',체재='%NS')

첫 번째 인수는 필수이며 파일 이름, 문자열 또는 경로를 값으로 사용합니다. 이 인수에 파일 이름이 제공되면 파일이 생성됩니다. 두 번째 인수는 배열 요소를 구분하는 데 사용되는 선택 사항입니다. 세 번째 인수도 선택 사항이며 텍스트 파일의 출력 형식을 지정하는 데 사용됩니다.

fomfile() 구문:

멍멍.fromfile(파일,dtype=뜨다,세다=-1,9월='',오프셋=0,*,처럼=없음)

첫 번째 인수는 필수이며 파일 이름, 문자열 또는 경로를 값으로 사용합니다. 이 인수에 파일 이름이 제공되면 파일 내용을 읽습니다. NS dtype 반환된 배열의 데이터 유형을 정의합니다. count는 항목 수를 계산하는 데 사용됩니다. 목적 9월 텍스트 또는 배열 항목을 분리하는 것입니다. 오프셋은 파일의 현재 위치를 정의하는 데 사용됩니다. 마지막 인수는 다음이 아닌 배열 객체를 생성하는 데 사용됩니다. 넘파이 배열 .

다음 스크립트를 사용하여 python 파일을 생성하여 다음을 사용하여 바이너리 파일을 생성합니다. 넘파이 배열 바이너리 파일의 내용을 읽고 인쇄합니다.

# Numpy 모듈 가져오기

수입numpy같이

# numpy 배열 선언

nparray=예를 들어정렬([3. 4, 89, 30, 오분의 사, 90, 열하나])

# numpy 배열에서 바이너리 파일 생성

엔파레이.파일로('목록.빈')

# 바이너리 파일에서 데이터 인쇄

인쇄(예를 들어fromfile('목록.빈',dtype=예를 들어int64))

산출:

위의 스크립트를 실행하면 다음 출력이 나타납니다.

결론:

이 튜토리얼에서는 간단한 예제를 사용하여 바이너리 파일을 읽는 세 가지 다른 방법을 보여줍니다. 첫 번째 예는 바이너리 파일의 내용을 바이트 배열로 반환했습니다. 두 번째 예에서는 이진 파일의 내용을 목록으로 반환했습니다. 마지막 예는 또한 바이너리 파일의 내용을 목록으로 반환했습니다.