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
쓰기
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.
읽기
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)))
- 앞서 쓰기의 예제에서의 파일을 읽어들일 경우, 32 bytes를 읽어들이게 됨.
- EoF (end of file)에서 읽어들이게 된 경우 빈 bytes (empty bytes)를 반환.
- argument 없이
read()
를 사용할 경우, 전체를 한번에 읽어들임. (큰 사이즈의 파일을 읽을 경우 주의할 것.) - 맨 아래 line의 경우,
bytes
의 각 item이 byte들에 해당하는int
item을map
을 통해 얻고- 이들을 item으로 가지는
list
를 만들어 출력함.
728x90
'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 |