Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 파일을 열 때 버퍼 크기를 어떻게 지정합니까?


open - open(name[, mode[, buffering]])의 함수 정의를 보면 Python 2에서 3개의 인수가 필요하다는 것을 알 수 있습니다. 버퍼링. 선택적 버퍼링 인수는 파일의 원하는 버퍼 크기를 지정합니다. 0은 버퍼되지 않음을 의미하고, 1은 라인 버퍼링을 의미하며, 다른 양수 값은 (대략) 해당 크기(바이트)의 버퍼를 사용함을 의미합니다. 네거티브 버퍼링은 시스템 기본값을 사용하는 것을 의미하며 일반적으로 tty 장치에 대해 라인 버퍼링되고 다른 파일에 대해 완전히 버퍼링됩니다. 생략하면 시스템 기본값이 사용됩니다.

예를 들어, 버퍼 크기가 128바이트인 파일을 열려면 다음과 같이 파일을 열 수 있습니다. -

>>> open('my_file', 'r+', 128)

Python 3에서 open의 함수 정의는 다음과 같습니다. open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener =없음). buffering은 버퍼링 정책을 설정하는 데 사용되는 선택적 정수입니다. 버퍼링을 끄려면 0을 전달하고(바이너리 모드에서만 허용됨), 라인 버퍼링을 선택하려면 1(텍스트 모드에서만 사용 가능), 정수> 1을 전달하면 고정 크기 청크 버퍼의 크기를 바이트 단위로 나타냅니다. 버퍼링 인수가 주어지지 않으면 기본 버퍼링 정책은 다음과 같이 작동합니다 -

  • 바이너리 파일은 고정 크기 청크로 버퍼링됩니다. 버퍼 크기는 기본 장치의 "블록 크기"를 결정하고 io.DEFAULT_BUFFER_SIZE로 폴백하려는 경험적 방법을 사용하여 선택됩니다.

  • "대화형" 텍스트 파일(isatty()이 True를 반환하는 파일)은 라인 버퍼링을 사용합니다. 다른 텍스트 파일은 바이너리 파일에 대해 위에서 설명한 정책을 사용합니다.

Python 3의 예는 Python 2와 동일합니다. 의 경우 , 버퍼 크기가 128바이트인 파일을 열려면 다음과 같이 파일을 열 수 있습니다. -

>>> open('my_file', 'r+', 128)