바이너리 파일을 1바이트씩 읽어오는 방법이 궁금합니다


바이너리 파일을 1바이트씩 읽어오는 방법이 궁금합니다!

제가 이때까지 배운 파일io에서는 한줄씩, 여러줄씩 읽는 방법밖에 없었는데

그럼 scanf에서 %c하는 것처럼 1개씩 읽을 수 있는 방법은 없을까요?

  • 2016년 02월 11일에 작성됨

조회수 485


1 답변


좋아요
0
싫어요
채택취소하기

파일 모드에 'b'를 추가하세요. 'b'는 binary 모드를 의미하는 모드입니다.

관련된 모드는 open에서 볼 수 있습니다.

파이썬 2.x에서

with open("myfile", "rb") as f:
    byte = f.read(1)
    while byte != "":
        # byte처리
        byte = f.read(1)

with문은 파이썬 2.5버전 이하로는 지원하지 않으니 from __future__ import with_statement를 추가해야 할 수도 있습니다

파이썬 3.x에서

파이썬 3에서는 raw 캐릭터를 읽어올 수 없기 때문에 조건문을 좀 바꿔줘야 합니다(""에서 b"")

with open("myfile", "rb") as f:
    byte = f.read(1)
    while byte != b"":
        # Do stuff with byte.
        byte = f.read(1)

###아니면

with open("myfile", "rb") as f:
    byte = f.read(1)
    while byte:
        # Do stuff with byte.
        byte = f.read(1)

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close