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

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

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

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

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)
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.