Python使用ftplib实现简易FTP客户端的方法
本文实例讲述了Python使用ftplib实现简易FTP客户端的方法。分享给大家供大家参考。具体实现方法如下:
#!/usr/bin/python #-*-coding:utf-8-*- fromftplibimportFTP#加载ftp模块 ftp=FTP()#设置变量 ftp.set_debuglevel(2)#打开调试级别2,显示详细信息 ftp.connect("IP","port")#连接的ftpsever和端口 ftp.login("user","password")#连接的用户名,密码 printftp.getwelcome()#打印出欢迎信息 ftp.cmd("xxx/xxx")#更改远程目录 bufsize=1024#设置的缓冲区大小 filename="filename.txt"#需要下载的文件 file_handle=open(filename,"wb").write #以写模式在本地打开文件 ftp.retrbinaly("RETRfilename.txt",file_handle,bufsize) #接收服务器上文件并写入本地文件 ftp.set_debuglevel(0)#关闭调试模式 ftp.quit#退出ftp ftp.dir()#显示目录下文件信息 ftp.mkd(pathname)#新建远程目录 ftp.pwd()#返回当前所在位置 ftp.rmd(dirname)#删除远程目录 ftp.delete(filename)#删除远程文件 ftp.rename(fromname,toname)#将fromname修改名称为toname。 ftp.storbinaly("STORfilename.txt",file_handel,bufsize)#上传目标文件
一个FTP完整实例:
#coding:utf-8 fromctypesimport* importos importsys importftplib classmyFtp: ftp=ftplib.FTP() bIsDir=False path="" def__init__(self,host,port='21'): self.ftp.set_debuglevel(2)#打开调试级别2,显示详细信息 #self.ftp.set_pasv(0)#0主动模式1#被动模式 self.ftp.connect(host,port) defLogin(self,user,passwd): self.ftp.login(user,passwd) printself.ftp.welcome defDownLoadFile(self,LocalFile,RemoteFile): file_handler=open(LocalFile,'wb') self.ftp.retrbinary("RETR%s"%(RemoteFile),file_handler.write) file_handler.close() returnTrue defUpLoadFile(self,LocalFile,RemoteFile): ifos.path.isfile(LocalFile)==False: returnFalse file_handler=open(LocalFile,"rb") self.ftp.storbinary('STOR%s'%RemoteFile,file_handler,4096) file_handler.close() returnTrue defUpLoadFileTree(self,LocalDir,RemoteDir): ifos.path.isdir(LocalDir)==False: returnFalse LocalNames=os.listdir(LocalDir) printRemoteDir self.ftp.cwd(RemoteDir) forLocalinLocalNames: src=os.path.join(LocalDir,Local) ifos.path.isdir(src): self.UpLoadFileTree(src,Local) else: self.UpLoadFile(src,Local) self.ftp.cwd("..") return defDownLoadFileTree(self,LocalDir,RemoteDir): ifos.path.isdir(LocalDir)==False: os.makedirs(LocalDir) self.ftp.cwd(RemoteDir) RemoteNames=self.ftp.nlst() forfileinRemoteNames: Local=os.path.join(LocalDir,file) ifself.isDir(file): self.DownLoadFileTree(Local,file) else: self.DownLoadFile(Local,file) self.ftp.cwd("..") return defshow(self,list): result=list.lower().split("") ifself.pathinresultand"<dir>"inresult: self.bIsDir=True defisDir(self,path): self.bIsDir=False self.path=path #thisuescallbackfunction,thatwillchangebIsDirvalue self.ftp.retrlines('LIST',self.show) returnself.bIsDir defclose(self): self.ftp.quit() ftp=myFtp('********') ftp.Login('*****','*****') #ftp.DownLoadFile('TEST.TXT','others\\runtime.log')#ok #ftp.UpLoadFile('runtime.log','others\\runtime.log')#ok #ftp.DownLoadFileTree('bcd','others\\abc')#ok #ftp.UpLoadFileTree('aaa',"others\\") ftp.close() print"ok!"
希望本文所述对大家的Python程序设计有所帮助。