[파이썬] 파일 객체의 버퍼링 모드와 설정

파이썬에서 파일을 다루는 과정에서 버퍼링(buffering)은 중요한 역할을 합니다. 파일 객체의 버퍼링 모드와 설정을 올바르게 이해하고 활용하는 것은 파일 처리의 효율성과 안정성을 향상시키는 데 도움을 줄 수 있습니다.

버퍼링 모드

파이썬 파일 객체는 세 가지 버퍼링 모드를 지원합니다.

  1. 버퍼링 미사용 (unbuffered): 파일에 쓰기 작업을 할 때마다 즉시 파일에 쓰여집니다. open() 함수를 호출할 때 buffering 인자에 0을 전달하여 버퍼링 미사용 모드를 설정할 수 있습니다.
    file = open('example.txt', 'w', buffering=0)
    
  2. 라인 버퍼링 (line buffering): 파일에 쓰기 작업을 할 때마다 버퍼가 가득 차거나 개행 문자(\n)를 만날 때까지 데이터가 버퍼에 저장됩니다. open() 함수를 호출할 때 buffering 인자에 1을 전달하여 라인 버퍼링 모드를 설정할 수 있습니다.
    file = open('example.txt', 'w', buffering=1)
    
  3. 풀 버퍼링 (fully buffered): 파일에 쓰기 작업을 할 때 버퍼가 가득 차거나 파일을 닫을 때까지 데이터가 버퍼에 저장됩니다. buffering 인자를 생략하거나 open() 함수를 호출할 때 buffering 인자에 1보다 큰 값을 전달하여 풀 버퍼링 모드를 설정할 수 있습니다.
    file = open('example.txt', 'w', buffering=1024)
    

버퍼링 설정

기본적으로 파일 객체의 버퍼링 모드는 운영체제와 사용하는 디바이스에 따라 자동으로 설정됩니다. 하지만 경우에 따라 버퍼링 모드를 수동으로 설정할 필요가 있을 수 있습니다.

파일 객체의 버퍼링 모드를 확인하려면 buffering 속성을 사용합니다.

buffering_mode = file.buffering

파일 객체의 버퍼링 모드를 변경하려면 buffering 속성에 원하는 버퍼링 모드 값을 할당합니다.

file.buffering = 0
file.buffering = 1
file.buffering = 1024

주의: 버퍼링 모드는 파일을 여는 시점에서만 설정 가능하며, 파일이 열려 있는 동안에는 변경할 수 없습니다.

버퍼링 모드를 수정하기 전에 항상 파일을 닫고 다시 열어야 합니다.

file.close()
file = open('example.txt', 'w', buffering=0)

버퍼링을 사용하는 이유는 디스크 I/O 작업을 최소화하여 프로그램 실행 속도를 향상시킨다는 점입니다. 하지만 중요한 데이터를 쓰는 경우, flush() 메서드를 사용하여 버퍼를 비우고 디스크에 즉시 쓰도록 할 수 있습니다.

file.write('Important data\n')
file.flush()

버퍼링 모드와 설정은 파일 작업의 성능과 안정성을 향상시키는 동시에 다루는 파일의 특성에 맞게 최적화하는 데 도움을 줍니다. 적절한 버퍼링 모드와 설정을 선택하여 파일 처리를 더욱 효율적으로 관리해보세요.