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

조회수 9812회

바이너리 파일을 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)
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)