5.1 바이너리 데이터
Python에서 바이너리 파일 작업은 텍스트 파일 작업과 약간 다릅니다. 왜냐하면 바이너리 파일은 사람이 읽을 수 있는 형식이 아닌 데이터 포맷을 포함하기 때문이죠. 바이너리 파일은 문자열 대신 바이트와 함께 작업해요.
바이너리 파일을 사용하기 위해서는 open()
함수를 사용하고, 모드에 'b'
를 지정해야 해요 (예: 읽기용으로 'rb'
, 쓰기용으로 'wb'
등).
바이너리 파일 열기 예시:
- 읽기:
'rb'
- 쓰기:
'wb'
- 추가하기:
'ab'
- 읽기 및 쓰기:
'r+b'
,'w+b'
,'a+b'
예시:
file = open('example.bin', 'rb')
content = file.read()
print(content)
file.close()
변수 'content'
은 바이트 배열을 포함하게 될 거예요.
바이너리 데이터 (바이트)는 가장 낮고 기본적인 수준의 데이터 표현이에요. 모든 데이터는 바이너리로 읽힐 수 있습니다.
이는 텍스트 파일을 언제든지 바이너리로 읽을 수 있다는 것을 의미하지만, 모든 바이너리 파일이 텍스트로 해석될 수 있는 것은 아닙니다.
5.2 바이너리 파일 읽기
파일의 전체 내용 읽기
read()
메소드는 파일의 모든 내용을 바이트로 읽습니다.
예시:
file = open('example.bin', 'rb')
content = file.read()
print(content)
file.close()
특정 바이트 수 읽기
read(n)
메소드는 파일에서 n
바이트를 읽습니다.
예시:
file = open('example.bin', 'rb')
content = file.read(10) # 처음 10 바이트를 읽습니다
print(content)
file.close()
줄 단위로 읽기
readline()
메소드는 파일에서 한 줄을 읽습니다. 바이너리 파일의 경우 줄은 새 줄 문자 (\n)
로 끝납니다.
예시:
file = open('example.bin', 'rb')
line = file.readline()
print(line)
file.close()
모든 줄 읽기
readlines()
메소드는 파일의 모든 줄을 읽어 바이트 리스트로 반환합니다.
예시:
file = open('example.bin', 'rb')
lines = file.readlines()
for line in lines:
print(line)
file.close()
문자열 작업을 위한 메소드는 텍스트가 아닌 내용을 포함한 파일을 읽을 때 올바르게 작동하지 않을 수 있어요. 예를 들어 아카이브, 이미지 또는 비디오 같은 경우요.
5.3 바이너리 데이터 쓰기
write()
메소드는 바이트를 파일에 씁니다. 기록할 데이터는 (bytes)
형식이어야 해요.
이미지 읽기 및 쓰기
파일에서 이미지를 읽고 다른 파일에 작성하기.
# 이미지 읽기
with open('input_image.jpg', 'rb') as infile:
image_data = infile.read()
# 이미지 쓰기
with open('output_image.jpg', 'wb') as outfile:
outfile.write(image_data)
텍스트 데이터 또한 쓸 수 있어요:
예시:
data = b"Hello, World!"
lines = [b"First line.\n", b"Second line.\n", b"Third line.\n"]
file = open('example.bin', 'wb')
file.write(data)
file.writelines(lines)
file.close()
GO TO FULL VERSION