현재 Python 3 기본 제공 예외가 필요한 프로젝트에서 Python 2를 사용하고 있습니다 : . 어떻게해야합니까?Python 3에서 FileNotFoundError를 어떻게 가져 옵니까?
답변
물론 원하는 예외를 정의 할 수 있습니다.
그러나 그들은 당신을 좋아하지 않을 것입니다. FileNotFoundError
의 요점은 파일을 찾을 수없는 오류로 실행되는 모든 파이썬 연산이 그 예외를 발생 시킨다는 것입니다. 자신의 예외를 정의하는 것만으로는 알 수 없습니다. 얻을 수있는 것은 errno
값을 가진 OSError
(또는 2.x 버전에 따라 IOError
)입니다. 사용자 정의 FileNotFoundError
을 처리하려고하면 핸들러가 호출되지 않습니다.
그럼, 당신이 정말로 원하는 것은 (예를 들어)입니다 :
는try:
f = open(path)
except OSError as e:
if e.errno == errno.ENOENT:
# do your FileNotFoundError code here
else:
raise
[올바른 예외는 IOError] (https://docs.python.org/2/library/exceptions.html#exceptions.IOError)와 같습니다. – Mansour
@ 맨수르 : 2.6-2.7에 대해,이 두 개는 꽤 깔끔하게 나뉘어져 있습니다. 이전 버전 (특히 CPython을 사용하지 않는 경우)은 다른 이야기입니다 (소켓 연결 오류와 같은 몇 가지 사항이있었습니다). 그러므로 "2.x 버전에 의존"합니다. 안전을 위해 둘 다 항상 잡을 수 있습니다 (또는 1.5로 돌아갈 필요가없는 한) 공통 하위 클래스 인 EnvironmentError를 잡을 수 있습니다. – abarnert
나는 텍스트를 완전히 무시하면서 예제를 읽었다! – Mansour
당신은 단순히 자신이 FileNotFoundError
예외를 만들 수 있습니다
class FileNotFoundError(OSError):
pass
이 새로운 예외 클래스는 파이썬 3.x에서의 일처럼 OSError
에서 상속
여기는 파이썬에서 User-defined Exceptions에 대한 참조입니다.
대신 IOError
을 사용할 수
제기 할 때와 같은 인쇄 문 같은 I/O 작업 (즉, I/O 관련 이유로 예 : "파일을 찾을 수 없음" 또는 "디스크 꽉 참"과 같은 기본 제공 open() 함수 또는 파일 객체의 메서드)가 실패합니다.이 클래스는 EnvironmentError에서 파생되었습니다. 예외 인스턴스 속성에 대한 자세한 정보는 위의 설명을 참조하십시오.
버전 2.6에서 변경됨 :이 클래스를 기본 클래스로 사용하도록 socket.error가 변경되었습니다.
더 많은 컨텍스트를 제공 할 수 있습니까? 보통 한 문장의 대답으로는 충분하지 않습니다. – sadmicrowave
설명서에 대한 링크 또는 견적은 훌륭합니다. ^^ 훨씬 포괄적입니다 +1 – sadmicrowave
견적을 추가했습니다. "파일을 찾을 수 없음"부분을 강조 표시했습니다 :-) –
- 1. Rails 3에서 JavaScript 파일을 어떻게 가져 옵니까?
- 2. boost :: python embedded python 코드에서 모듈을 어떻게 가져 옵니까?
- 3. 하위 디렉토리에서 어떻게 가져 옵니까?
- 4. judo.js는 어떻게 가져 옵니까?
- 5. typeArguments는 어떻게 가져 옵니까?
- 6. 블렌더에서 pywin32를 어떻게 가져 옵니까?
- 7. 어떻게 statsmodels.WLS.fit.summary에서 값을 가져 옵니까?
- 8. 어떻게 gcm에서 데이터를 가져 옵니까?
- 9. 파스칼에서 코드를 어떻게 가져 옵니까?
- 10. 어떻게 msgbox에 포커스를 가져 옵니까?
- 11. XML 속성은 어떻게 가져 옵니까?
- 12. locationManager는 좌표를 어떻게 가져 옵니까?
- 13. 어떻게 이클립스에 twitter4j를 가져 옵니까?
- 14. QTableView에서 데이터를 어떻게 가져 옵니까?
- 15. MemoryStream에서 문자열을 어떻게 가져 옵니까?
- 16. 이 WSDL은 어떻게 가져 옵니까?
- 17. 이미지의 src를 어떻게 가져 옵니까?
- 18. pygame 라이브러리를 Eclipse의 pydev로 어떻게 가져 옵니까?
- 19. 어떻게 업체에서 가져 오기 패키지를 가져 옵니까?
- 20. Python : PyObject의 문자열 표현을 가져 옵니까?
- 21. Python - 프로그래밍 방식으로 파일 경로를 가져 옵니까?
- 22. IronPython을 사용하여 Python 문자열에서 CodeExpression을 가져 옵니까?
- 23. python tkinter의 확인란에서 입력을 가져 옵니까?
- 24. Python : 폴더에서 모든 모듈을 가져 옵니까?
- 25. 어떻게 스트럿트에서 combobox로 동적으로 값을 가져 옵니까?
- 26. iPhone 앱에 오디오를 어떻게 가져 옵니까?
- 27. SQL DB로 스페인어를 어떻게 가져 옵니까?
- 28. Qt 플러그인에서 디버그 메시지를 어떻게 가져 옵니까?
- 29. Dynamic $ .getJSON, 어떻게 요소를 가져 옵니까?
- 30. 어떻게 이전 양식 입력란에서 값을 가져 옵니까?
당신은 그렇게 할 수 없습니다. 왜 예외를 정의하지 않는 것이 좋을까요? –
'시도 '다음에'제외 : 통과 ' – Hackaholic
@Hackaholic Err ... no. 왜 그걸하고 싶습니까? –