0. Binary File이란
Binary file은 데이터를
- 텍스트 형식이 아닌
- 이진 형식(0과 1의 비트로 구성된 형식)으로 저장하는 파일.
Binary file (이진 파일)은
- 텍스트 파일과 달리 사람이 읽을 수 있는 문자로 표현되지 않으며,
- 특정 응용 프로그램이나 소프트웨어에 의해 해석되어야 함.
1. Binary File 처리하기
txt file과 거의 비슷하나, 다음의 차이를 보임.
- 파일 내용을 담는데 사용하는 class가
str
을 주로 쓰는 txt file의 경우와 달리bytes
와bytearray
를 사용한다.bytes
는 immutable이고,bytearray
는 mutable인 점을 기억할 것.
- txt file의 경우 글자수를 반환 또는 입력받는 것과 달리, byte 수를 사용함.
txt file을 읽고 쓰는 건 다음을 참고.
2023.07.04 - [Python] - [Python] Text File : read and write
당연하지만, binary file을 읽고 쓰려면 binary mode로 파일을 열어야 함.
2023.07.04 - [Python] - [Python] file : open and close
2. 쓰기
write
메서드를 이용한다.
# 32 bytes 의 데이터.
bin_data = bytearray(range(0,32))
# bin_data = bytes(bin_data)
with open('bfile.bin', 'wb') as fout:
cnt = fout.write(bin_data)
print(f'{cnt} bytes is written!')
write()
returns
the number of bytes written.
3. 읽기
read
메서드를 이용한다.
r_bin = bytes()
with open('bfile.bin', 'rb') as fin:
chunk = 5
while buf := fin.read(chunk):
r_bin += buf
print(len(r_bin))
print(list(map(int,r_bin)))
print(r_bin)
- 앞서 쓰기의 예제에서의 파일을 읽어들일 경우, 32 bytes를 읽어들이게 됨.
- EoF (end of file)에서 읽어들이게 된 경우 빈 bytes (empty bytes)를 반환.
- argument 없이
read()
를 사용할 경우, 전체를 한번에 읽어들임. (큰 사이즈의 파일을 읽을 경우 주의할 것.) - 맨 아래 line의 경우,
bytes
의 각 item이 byte들에 해당하는int
item을map
을 통해 얻고- 이들을 item으로 가지는
list
를 만들어 출력함.
더보기
참고: map사용법(high-order function)
같이 보면 좋은 자료들
2023.12.05 - [Python] - [Python] File Handling
2024.11.27 - [Python] - [Py] Serialization of Python: pickle
2024.01.15 - [Python] - [python] Text mode vs. Binary mode: File open
'Python' 카테고리의 다른 글
[Python] lambda expression and map, filter, reduce. (0) | 2023.07.07 |
---|---|
[Python] os 모듈의 함수들 : file과 directory 관련 (0) | 2023.07.04 |
[Python] Text File: read and write (0) | 2023.07.04 |
[Python] file: open and close (0) | 2023.07.04 |
[Python] Regular Expression : 표현식 기초 및요약 (0) | 2023.07.03 |