Q & A

파일 연 뒤에는 왜 파일을 닫아야 하나요?

파이썬에는 사용이 끝난 메모리를 정리해주는 가비지 컬렉터가 있어서 파일을 닫지 않아도 가비지 컬렉터가 파일을 닫아줍니다. 하지만 프로그래머가 파일을 직접 닫아야 하는 이유는 다음과 같습니다.

  • 너무 많은 파일을 열어 두면 그만큼 메모리 공간을 차지하므로 성능에 영향을 줄 수 있습니다.
  • 파일을 닫지 않으면 데이터가 쓰기가 완료되지 않을 수도 있습니다. 운영체제는 파일을 처리할 때 성능을 위해서 데이터를 버퍼(임시 공간)에 저장한 뒤 파일에 씁니다. 때에 따라서는 파일이 닫히는 시점에 버퍼의 내용이 파일에 저장됩니다.
  • 이론적으로 운영체제에서 열 수 있는 파일의 개수는 한계가 있습니다.
  • 운영체제에 따라 파일을 열었을 때 파일을 잠금 상태로 처리하는 경우가 있습니다. 실질적으로 파일 처리가 끝났더라도 파일을 닫지 않으면 다른 프로그램에서 파일을 사용할 수 없는 상태가 됩니다.

보통은 파일을 닫지 않아도 큰 문제가 없습니다. 하지만 실무에서는 사소한 실수로도 큰 문제가 발생하는 경우가 있으므로 파일을 정확히 닫는 습관을 기르는 것이 좋습니다. 파이썬에서는 주로 with as를 사용하여 파일을 자동으로 닫는 방식을 사용합니다.