728x90
OSError: [Errno 22] Invalid argument
오류는 잘못된 인자(특히 경로)를 사용하여 파일을 열거나 조작하려고 할 때 발생합니다. Windows 시스템에서 파일 경로에 허용되지 않는 문자가 포함되어 있거나, 경로 형식이 잘못되었을 때 주로 발생합니다.
예를 들어 파일 이름에 :, *, ?, <, >, |, \
등의 문자가 포함되면 Windows에서는 해당 경로가 유효하지 않기 때문에 오류가 발생합니다. 또한 파일 경로가 너무 길거나, open()
함수의 인자에 None, 빈 문자열 등이 전달되었을 때도 같은 오류가 발생할 수 있습니다.
● 오류 발생 예시
open("invalid:file.txt", "w")
Windows에서는 콜론(:)이 포함된 파일 이름을 사용할 수 없기 때문에 오류가 발생합니다.
OSError: [Errno 22] Invalid argument: 'invalid:file.txt'
● 해결 방법
- 경로에 사용 불가능한 문자가 포함되어 있는지 확인
- 파일 이름에
: * ? " < > |
등의 문자 제거 os.path
또는pathlib.Path
로 경로 유효성 검사
● 예시 코드
from pathlib import Path
safe_name = "report_2024.txt"
path = Path("C:/Users/user/Desktop") / safe_name
with open(path, "w") as f:
f.write("파일 생성 완료")
● 자주 하는 실수
- 날짜/시간 문자열을 파일 이름에 그대로 사용 (예: 2024:05:25)
- 플랫폼에 따라 경로 호환성을 고려하지 않음
- 파일 경로를 문자열로 하드코딩하면서 실수
● 결론
OSError - [Errno 22] Invalid argument
오류는 경로 또는 인자가 잘못되었을 때 발생합니다. 특히 Windows 환경에서는 파일 이름 규칙과 경로 제한을 고려하여 안전한 경로 조합을 사용하는 것이 중요합니다.
728x90