ftplib 모듈의 활용
FTP로 파일을 다운로드 받을일이 있었는데 문제는 파일의 수가 엄청 많아서, 일반 FTP Client 프로그램으로는 도저히 다운받을 수가 없었다.
19만개의 jpeg 시퀀스...영화 한편에 달하는 분량이다. 이럴땐 역시 텍스트 기반으로 접근하는 것이 효율적이라는 생각에 처음엔 Command Prompt로 해보았는데, 이것도 역시 한번에 100개 이상의 파일을 받질 못했다. 결국 파이썬으로 초간단 FTP Client를 만들어서 해결할 수 있었다.
파일네임은 edit.0000001.jpg ~ edit.0190000.jpg.

import ftplib
ip = '000.000.000.000'
username = 'guest'
password = 'guest'
dnpath = 'c:/download'
ftp = ftplib.FTP(ip)
ftp.login(username, password)
welcome = ftp.getwelcome()
print welcome
ftp.cwd('/download')
#ftp.retrlines('LIST') -- file 수가 많으면 응답속도 느림
for i in range(1, 1900001):
    if i < 10:
        fpad = "000000"+str(i)
    elif i < 100:
        fpad = "00000"+str(i)
    elif i < 1000:
        fpad = "0000"+str(i)
    elif i < 10000:
        fpad = "000"+str(i)
    elif i < 100000:
        fpad = "00"+str(i)
    elif i < 1000000:
        fpad = "0"+str(i)
    f = "edit."+fpad+".jpg"
    fo = open(dnpath + f, "wb")
    print "%s -> %s" % (f, dnpath + f)
    ftp.retrbinary("RETR " + f, fo.write, 1024)
    fo.close()
ftp.quit()
by mayan | 2005/07/16 14:06 | Python | 트랙백 | 덧글(4)
트랙백 주소 : http://mayan.egloos.com/tb/1547551
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by chang E at 2005/07/19 23:41
bravo
Commented by chang E at 2005/09/13 13:24
숫자앞에 0 붙이는 방법을 찾아봤는데,

str(i).rjust(5,"0")

이런게 있더군요.
Commented by mayan at 2005/09/14 01:07
아항~^^
Commented at 2008/06/19 16:04
비공개 덧글입니다.

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >