import ftplib import os import socket import sys HOST='192.168.216.193' DIRN='c:\\ftp\FTP.123' FILE='FTP.123' USER_NAME='123' PWD='123' def Downloadfile(file_name): try: f=ftplib.FTP(HOST) except(sockt.error, socket.gaierror) as e: print ('error: cannot reach %s' % HOST) return print ('**** connected to host %s' % HOST) try: f.login(USER_NAME,PWD) except ftplib.error_perm: print('ERROR:cannot login USER_NAME=%s,PWD=%s'%(USER_NAME,PWD)) f.quit() return print('*** logined in as %s ' % USER_name) try: f.cwd(DIRN) except ftplib.error_perm: print ('error :cannot cd to %s'% RIRN) f.quit() return try: file=open(file_name, 'wb') f.retrbinary('RETR %s' %file_name,file.write) file.close() except ftplib.error_perm: print('error !!') os.unlink(filename) file.close() else: print ('**** downloaded %s to %s'%(file_name ,os.getcwd())) f.quit return Downloadfile(123.txt)
> import ftplib >>> f=ftplib.FTP('192.168.216.193')\ >>> f=ftplib.FTP('192.168.216.193') >>> f.login('123','123') '230 User successfully logged in.' >>> f.cwd('FTP.123') '250 "/ftp.123" is current directory.' >>> f.retrbinary('RETR 123.txt',open('c:\\123.txt','wb').write) '226 Transfer complete'
網上其他人寫的腳本
#!/usr/bin/env python # -*- coding: utf-8 -*- from ftplib import FTP def ftp_up(filename = "20120904.rar"): ftp=FTP() ftp.set_debuglevel(2) #打開調試級別2,顯示詳細信息;0為關閉調試信息 ftp.connect('192.168.0.1','21') #連接 ftp.login('admin','admin') #登錄,如果匿名登錄則用空串代替即可 #print ftp.getwelcome() #顯示ftp服務器歡迎信息 #ftp.cwd('xxx/xxx/') #選擇操作目錄 bufsize = 1024 #設置緩沖塊大小 file_handler = open(filename,'rb') #以讀模式在本地打開文件 ftp.storbinary('STOR %s' % os.path.basename(filename),file_handler,bufsize) #上傳文件 ftp.set_debuglevel(0) file_handler.close() ftp.quit() print "ftp up OK" def ftp_down(filename = "20120904.rar"): ftp=FTP() ftp.set_debuglevel(2) ftp.connect('192.168.0.1','21') ftp.login('admin','admin') #print ftp.getwelcome() #顯示ftp服務器歡迎信息 #ftp.cwd('xxx/xxx/') #選擇操作目錄 bufsize = 1024 filename = "20120904.rar" file_handler = open(filename,'wb').write #以寫模式在本地打開文件 ftp.retrbinary('RETR %s' % os.path.basename(filename),file_handler,bufsize) #接收服務器上文件並寫入本地文件 ftp.set_debuglevel(0) file_handler.close() ftp.quit() print "ftp down OK