검색결과 리스트
다운로드에 해당되는 글 1건
- 2006.09.22 파이썬으로 파일 다운로드와 그 예외 처리
글
파이썬으로 파일 다운로드와 그 예외 처리
파이썬
2006. 9. 22. 14:26
파이썬 튜토리얼을 대충 훓어본 후, 맨 처음 해 본것은
기존에 쉘 스크립트와 루비를 이용해 만든 유틸리티였습니다.
이 유틸중에 URL 주소로 부터 파일을 다운로드 하는 부분이 있는데
이 부분에 대해서 이야기 해볼까 합니다.
먼저, URL 주소로 부터 파일을 다운로드 받는 방법 입니다.
요렇게 쓰면 파일을 다운로드 할 수 있습니다.
하지만 여기에서 문제가 발생했습니다. 어떤 서버내의 존재하지 않는 파일에 대해서
다운로드를 시도 할 때 exception 이 발생하지 않습니다.
구글님께 물어본 결과 저 현상이 당연하다는 글을 볼 수가 있었습니다.
왜냐하면 존재하지 않는 파일에 대해서 다운로드를 하게 되면
해당 파일이 아닌 다른 내용을 수신하게 되며, 네트웍으로 부터 정상적인
응답을 받았으므로 exception 이 아니라는 것입니다.
예를들면 http://www.naver.com/sdfa.jpg 파일을 위 코드를 사용하여 다운로드를 하게 되면
sdfa.jpg 라는 파일이 생성되며, 아무런 exception 이 발생하지 않습니다.
하지만 sdfa.jpg 라는 파일을 텍스트 에디터로 살펴보면 다음과 같습니다.
자, 그렇다면 어떻게 하면 다운로드 하려는 파일이 없다는 것을 알 수 있을까요?
머.. 여러 방법이 있겠지만, 제가 찾아낸 방법은 다음과 같습니다.
이상 어제 삽질의 보고서였습니다. (--)(__)
기존에 쉘 스크립트와 루비를 이용해 만든 유틸리티였습니다.
이 유틸중에 URL 주소로 부터 파일을 다운로드 하는 부분이 있는데
이 부분에 대해서 이야기 해볼까 합니다.
먼저, URL 주소로 부터 파일을 다운로드 받는 방법 입니다.
import urllib
URL = URL주소
urllib.urlretrieve(URL, URL.split('/')[-1])
URL = URL주소
urllib.urlretrieve(URL, URL.split('/')[-1])
요렇게 쓰면 파일을 다운로드 할 수 있습니다.
하지만 여기에서 문제가 발생했습니다. 어떤 서버내의 존재하지 않는 파일에 대해서
다운로드를 시도 할 때 exception 이 발생하지 않습니다.
구글님께 물어본 결과 저 현상이 당연하다는 글을 볼 수가 있었습니다.
왜냐하면 존재하지 않는 파일에 대해서 다운로드를 하게 되면
해당 파일이 아닌 다른 내용을 수신하게 되며, 네트웍으로 부터 정상적인
응답을 받았으므로 exception 이 아니라는 것입니다.
예를들면 http://www.naver.com/sdfa.jpg 파일을 위 코드를 사용하여 다운로드를 하게 되면
sdfa.jpg 라는 파일이 생성되며, 아무런 exception 이 발생하지 않습니다.
하지만 sdfa.jpg 라는 파일을 텍스트 에디터로 살펴보면 다음과 같습니다.
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
The requested URL /sdfa.jpg was not found on this server.<P>
</BODY></HTML>
<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
The requested URL /sdfa.jpg was not found on this server.<P>
</BODY></HTML>
자, 그렇다면 어떻게 하면 다운로드 하려는 파일이 없다는 것을 알 수 있을까요?
머.. 여러 방법이 있겠지만, 제가 찾아낸 방법은 다음과 같습니다.
file = urllib.urlopen(URL)
try:
if file.headers.get("content-length") == None:
raise
else:
file.close()
urllib.urlretrieve(URL, URL.split('/')[-1])
except:
(예외처리...)
try:
if file.headers.get("content-length") == None:
raise
else:
file.close()
urllib.urlretrieve(URL, URL.split('/')[-1])
except:
(예외처리...)
이상 어제 삽질의 보고서였습니다. (--)(__)
반응형
'파이썬' 카테고리의 다른 글
The Python 3.3.2 Tutorial (2) (0) | 2013.08.07 |
---|---|
The Python 3.3.2 Tutorial (1) (0) | 2013.08.07 |
파이썬 GUI 툴킷 Tkinter 와 wxPython (0) | 2006.09.27 |
Python 공식 홈페이지의 Python Tutorial 중 기억해 둘 만한것... (0) | 2006.09.20 |
파이썬을 배워볼까나... (3) | 2006.09.20 |