프로그래밍언어/파이썬[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