코어 파이썬 애플리케이션 프로그래밍 146~7p 의 예제 3-1 코드가 정상적으로 동작하지 않는 이유는 아래와 같습니다.
문제가 되는 구간은 40~41 라인, 44 라인인데 라인 비교를 위해 38 라인부터 보면,
책의 경우,
그러나 실제로는 아래와 같이 되어야 정상적으로 동작 합니다.
이유인즉, 40~41 라인 코드가 다운로드 완료 if 문으로 동작해서 다운로드 완료 된 파일을 다시 삭제하기 때문입니다. 따라서 전체 동작하는 코드는 아래와 같습니다.
except ftplib.error_perm: print 'ERROR: cannot read file "%s"' %FILE if os.path.exists(FILE): os.unlink(FILE) else: print '*** Download "%s" to CWD'%FILE f.quit()
그러나 실제로는 아래와 같이 되어야 정상적으로 동작 합니다.
except ftplib.error_perm: print 'ERROR: cannot read file "%s"' %FILE if os.path.exists(FILE): os.unlink(FILE) else: print '*** Download "%s" to CWD'%FILE f.quit()
이유인즉, 40~41 라인 코드가 다운로드 완료 if 문으로 동작해서 다운로드 완료 된 파일을 다시 삭제하기 때문입니다. 따라서 전체 동작하는 코드는 아래와 같습니다.
#!/usr/bin/env python import ftplib import os import socket HOST = 'ftp.mozilla.org' DIRN = 'pub/mozilla.org/webtools' FILE = 'bugzilla-LATEST.tar.gz' def main(): try: f = ftplib.FTP(HOST) except (socket.error, socket.gaierror) as e: print 'ERROR: cannot reach "%s"' %HOST return print '*** Connected to host "%s"'%HOST try: f.login() except ftplib.error_perm: print 'ERROR: cannot login anonymously' f.quit() return print '*** Logged in as "anonymous"' try: f.cwd(DIRN) except ftplib.error_perm: print 'ERROR: cannot CD to "%s" folder'%DIRN f.quit() return print '*** Changed to "%s" folder' % DIRN try: f.retrbinary('RETR %s'%FILE, open(FILE,'wb').write) except ftplib.error_perm: print 'ERROR: cannot read file "%s"' %FILE if os.path.exists(FILE): os.unlink(FILE) else: print '*** Download "%s" to CWD'%FILE f.quit() if __name__ == '__main__': main()
Comments
Post a Comment