importsys importos importjson fromftplibimportFTP _XFER_FILE="FILE" _XFER_DIR="DIR" classXfer(object): """"" @note: upload local file or dirs recursively to ftp server """ def__init__(self): self.ftp=None def__del__(self): pass defsetFtpParams(self, ip, uname, pwd, port=21, timeout=60): self.ip=ip self.uname=uname self.pwd=pwd self.port=port self.timeout=timeout definitEnv(self): ifself.ftpisNone: self.ftp=FTP() print"### connect ftp server: %s ..."%self.ip self.ftp.connect(self.ip,self.port,self.timeout) self.ftp.login(self.uname,self.pwd) printself.ftp.getwelcome() defclearEnv(self): ifself.ftp: self.ftp.close() print"### disconnect ftp server: %s!"%self.ip self.ftp=None defuploadDir(self, localdir="./", remotedir="./"): ifnotos.path.isdir(localdir): return self.ftp.cwd(remotedir) forfileinos.listdir(localdir): src=os.path.join(localdir,file) ifos.path.isfile(src): self.uploadFile(src,file) elifos.path.isdir(src): try: self.ftp.mkd(file) except: sys.stderr.write("the dir is exists %s"%file) self.uploadDir(src,file) self.ftp.cwd("..") defuploadFile(self, localpath, remotepath="./"): ifnotos.path.isfile(localpath): return print"+++ upload %s to %s:%s"%(localpath,self.ip, remotepath) self.ftp.storbinary("STOR "+remotepath,open(localpath,"rb")) def__filetype(self, src): ifos.path.isfile(src): index=src.rfind("\\") ifindex==-1: index=src.rfind("/") return_XFER_FILE, src[index+1:] elifos.path.isdir(src): return_XFER_DIR, "" defupload(self, src): filetype, filename=self.__filetype(src) self.initEnv() iffiletype==_XFER_DIR: self.srcDir=src self.uploadDir(self.srcDir) eliffiletype==_XFER_FILE: self.uploadFile(src, filename) self.clearEnv() if__name__=="__main__": srcDir=r"C:\sytst" srcFile=r"C:\sytst\sar.c" xfer=Xfer() xfer.setFtpParams("192.x.x.x","jenkins","pass") xfer.upload(srcDir) xfer.upload(srcFile)
python实现ftp上传文件或文件路径_Python实现FTP上传文件或文件夹实例(递归)
http://m.bbyears.com/jiaocheng/135593.html
推荐访问: