这篇文章主要介绍了Python使用ftplib实现简易FTP客户端的方法,实例分析了ftplib模块相关设置与使用技巧,需要的朋友可以参考下
本文实例讲述了Python使用ftplib实现简易FTP客户端的方法。分享给大家供大家参考。具体实现方法如下:
#!/usr/bin/python #-*- coding:utf-8 -*- fromftplib importFTP #加载ftp模块 ftp=FTP() #设置变量 ftp.set_debuglevel(2) #打开调试级别2,显示详细信息 ftp.connect("IP","port") #连接的ftp sever和端口 ftp.login("user","password")#连接的用户名,密码 printftp.getwelcome() #打印出欢迎信息 ftp.cwd("xxx/xxx") #更改远程目录 bufsize=1024 #设置的缓冲区大小 filename="filename.txt" #需要下载的文件 file_handle=open(filename,"wb").write #以写模式在本地打开文件 ftp.retrbinaly("RETR filename.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("STOR filename.txt",file_handel,bufsize)#上传目标文件
一个FTP完整实例:
#coding:utf-8
fromctypes import*
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 )
forLocal inLocalNames:
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()
forfile in RemoteNames:
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.pathinresult and"<dir>" in result:
self.bIsDir=True
defisDir( self, path ):
self.bIsDir=False
self.path=path
#this ues callback function ,that will change bIsDir value
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程序设计有所帮助。