프로그래밍언어/파이썬[Error]

[파이썬][Error] 065. FileNotFoundError - file deleted before reopening

about_IT 2025. 5. 29. 00:21
728x90

FileNotFoundError: file deleted before reopening 오류는 일시적으로 생성된 파일이나 임시 파일을 다시 열려고 할 때, 해당 파일이 이미 삭제되어 존재하지 않기 때문에 발생합니다. 파일이 생성되었지만 명시적 또는 암묵적으로 삭제된 이후에 다시 접근하면 이 오류가 발생합니다.

임시 파일 사용 시 파일의 생존 주기(lifecycle)를 정확히 이해하지 못하고 접근하거나, 다른 쓰레드/프로세스에 의해 파일이 삭제되는 경우가 주요 원인입니다.

● 오류 발생 예시

import tempfile
with tempfile.NamedTemporaryFile(delete=True) as tmp:
    path = tmp.name
# 이 시점에서 파일은 삭제됨
with open(path, 'r') as f:
    data = f.read()

위 코드는 with 블록이 끝나면서 파일이 삭제되었기 때문에, 이후 open(path) 호출 시 오류가 발생합니다.

FileNotFoundError: [Errno 2] No such file or directory: '임시경로'

● 해결 방법

  • delete=False로 설정하여 파일 생존 시간 유지
  • 파일이 닫히기 전에 필요한 작업을 모두 수행
  • 파일 존재 여부를 os.path.exists() 또는 Path.exists()로 확인

● 예시 코드 (수정 버전)

with tempfile.NamedTemporaryFile(delete=False) as tmp:
    path = tmp.name

with open(path, 'r') as f:
    data = f.read()

● 자주 하는 실수

  • 임시 파일을 with 문 밖에서 다시 접근
  • 파일이 삭제된 줄 모르고 다중 접근 시도
  • 다른 프로세스나 스크립트에서 파일을 삭제한 사실을 인지하지 못함

● 결론

FileNotFoundError - file deleted before reopening 오류는 삭제된 파일에 접근하려고 할 때 발생합니다. 파일이 살아 있는 동안에만 작업을 수행하거나, 삭제 시점을 명확히 파악하고 조건부로 접근하는 처리가 중요합니다.

728x90