python实现ftp上传文件或文件路径_Python实现FTP上传文件或文件夹实例(递归)

时间:2021-08-12  来源:python  阅读:
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

推荐访问:
相关阅读 猜你喜欢
本类排行 本类最新