본문 바로가기
프로그래밍언어/파이썬[Error]

[파이썬][Error] 119. IOError - file may not be closed properly on exception

by about_IT 2025. 6. 2.
728x90

IOError는 파일이나 입출력 작업 중 문제가 발생했을 때 발생하는 예외입니다. 특히 파일을 열고 처리하는 도중 예외가 발생해 파일이 제대로 닫히지 않으면 리소스 누수나 데이터 손실의 원인이 됩니다.

이 오류는 파일이 닫히지 않았다는 경고로 발생할 수 있으며, 예외 상황에 대한 적절한 처리가 필요합니다.

● 오류 발생 예시

f = open("test.txt", "w")
f.write("Hello")
raise Exception("문제 발생!")
f.close()

위 코드에서는 예외가 발생하여 f.close()가 실행되지 않기 때문에 파일이 열려 있는 상태로 남습니다.

● 주요 원인

  • 파일 작업 중 예외로 인해 닫히지 않음
  • 파일을 수동으로 닫지 않거나, 예외 상황을 고려하지 않음
  • 작업 중 중단되어 파일 핸들이 반환되지 않음

● 해결 방법

  • 파일 처리를 with open() 구문으로 대체해 자동으로 닫히도록 처리
  • try-finally 구문을 통해 예외가 발생하더라도 close() 보장

● 예시 코드 (정상 처리)

with open("test.txt", "w") as f:
    f.write("Hello")
    raise Exception("문제 발생!")
f = open("test.txt", "w")
try:
    f.write("Hello")
    raise Exception("문제 발생!")
finally:
    f.close()

● 결론

파일 입출력은 항상 안정성을 고려해야 하며, 예외 발생 시에도 파일이 반드시 닫히도록 설계해야 합니다. with 문법은 이를 보장하는 가장 안전한 방식입니다.

728x90