Python FileNotFoundError란?
`FileNotFoundError`는 Python에서 존재하지 않는 파일이나 경로를 열려고 할 때 발생하는 오류입니다. 주로 `open()`, `os.remove()`, `os.rename()` 또는 `pandas.read_csv()` 등 파일 입출력 작업 중 잘못된 경로를 지정할 경우 발생합니다.
1. FileNotFoundError 발생 원인
- 파일 이름이나 경로 오타
- 파일이 실제로 존재하지 않음
- 파일이 이동되거나 삭제됨
- 상대 경로와 현재 작업 디렉터리 불일치
- 파일 경로가 잘못된 문자열로 처리됨 (예: 백슬래시 오류)
2. FileNotFoundError 예시 코드
with open("data/input.txt", "r") as f:
content = f.read() # 파일이 없으면 FileNotFoundError 발생
오류 메시지 예시:
FileNotFoundError: [Errno 2] No such file or directory: 'data/input.txt'
3. FileNotFoundError 해결 방법
3-1. 파일 경로 정확히 확인
경로가 정확한지 확인하고, 실제로 파일이 존재하는지 점검합니다.
import os
file_path = "data/input.txt"
if os.path.exists(file_path):
with open(file_path, "r") as f:
content = f.read()
else:
print("파일을 찾을 수 없습니다.")
3-2. 예외 처리로 오류 방지
try-except 블록으로 `FileNotFoundError`를 처리해 프로그램이 중단되지 않도록 합니다.
try:
with open("data/input.txt", "r") as f:
content = f.read()
except FileNotFoundError:
print("지정된 파일이 존재하지 않습니다.")
3-3. 현재 작업 디렉터리 확인
상대 경로 문제일 수 있으므로 현재 작업 디렉터리를 확인합니다.
import os
print("현재 작업 디렉터리:", os.getcwd())
3-4. 경로 문자열 처리 주의
Windows 경로를 사용할 때 `\`를 `\\`로 쓰거나, `r"경로"` 형식으로 raw 문자열을 사용해야 합니다.
# 잘못된 방식
file_path = "C:\data\file.txt" # \f, \n 등으로 인식됨
# 올바른 방식
file_path = "C:\\data\\file.txt"
# 또는
file_path = r"C:\data\file.txt"
3-5. 파일이 없으면 자동 생성하기
읽기 전에 파일이 없으면 새로 생성하는 방법도 유용할 수 있습니다.
file_path = "log/output.txt"
if not os.path.exists(file_path):
open(file_path, "w").close() # 빈 파일 생성
with open(file_path, "a") as f:
f.write("새 로그 기록\n")
4. 고급 팁: pathlib 모듈 활용
Python 3.4 이상에서는 `pathlib` 모듈을 사용해 경로 처리와 파일 존재 여부 확인을 더욱 직관적으로 할 수 있습니다.
from pathlib import Path
file = Path("data/input.txt")
if file.exists():
content = file.read_text()
else:
print("파일이 존재하지 않습니다.")
5. 요약 및 결론
- `FileNotFoundError`는 파일 경로 오류로 가장 흔히 발생하는 예외입니다.
- 파일 경로를 정확히 확인하고, 존재 여부를 점검하세요.
- 예외 처리를 통해 사용자에게 오류를 친절하게 알릴 수 있습니다.
- 경로 문자열 처리와 현재 디렉터리 확인도 중요합니다.
이 가이드를 통해 Python의 `FileNotFoundError` 문제를 빠르게 해결하고, 보다 안정적인 파일 입출력 코드를 작성할 수 있습니다.