python上传文件到ftp服务器

来源:互联网 发布:店铺复制软件 编辑:程序博客网 时间:2024/06/06 05:55
__author__ = 'dacxu'  __mail__ = 'xudacheng06.com'  __date__ = '2013-10-29'  __version = 1.0    import sys  import os  import json  import time  from ftplib import FTP    _XFER_FILE = 'FILE'  _XFER_DIR = 'DIR'    class Xfer(object):      '''''     @note: upload local file or dirs recursively to ftp server     '''      def __init__(self):          self.ftp = None            def __del__(self):          pass            def setFtpParams(self, ip, uname, pwd, port = 21, timeout = 60):                  self.ip = ip          self.uname = uname          self.pwd = pwd          self.port = port          self.timeout = timeout            def initEnv(self):          if self.ftp is None:              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)               print self.ftp.getwelcome()            def clearEnv(self):          if self.ftp:              self.ftp.close()              print '### disconnect ftp server: %s!'%self.ip               self.ftp = None            def uploadDir(self, localdir='./', remotedir='./'):          if not os.path.isdir(localdir):                return          self.ftp.cwd(remotedir)           for file in os.listdir(localdir):              src = os.path.join(localdir, file)              if os.path.isfile(src):                  self.uploadFile(src, file)              elif os.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('..')            def uploadFile(self, localpath, remotepath='./'):          if not os.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):          if os.path.isfile(src):              index = src.rfind('\\')              if index == -1:                  index = src.rfind('/')                              return _XFER_FILE, src[index+1:]          elif os.path.isdir(src):              return _XFER_DIR, ''                    def upload(self, src):          filetype, filename = self.__filetype(src)                    self.initEnv()          if filetype == _XFER_DIR:              self.srcDir = src                          self.uploadDir(self.srcDir)          elif filetype == _XFER_FILE:              self.uploadFile(src, filename)          self.clearEnv()                        def file_extension(self, path):         return os.path.splitext(path)[1]if __name__ == '__main__':      '''srcFile = r'D:\dlc\docs\jQuery1.9.chm'    xfer = Xfer()      xfer.setFtpParams('172.25.29.68', 'dunchongap', 'dunchong123')        xfer.upload(srcFile) '''     directory = '/var/logs/apViewData'    '''directory = 'D:\dlc\docs\python'''    if os.path.exists(directory):        print 'Data directory exists.'    else:        os.makedirs(directory);    while 1:        xfer = Xfer()        xfer.setFtpParams('121.199.60.212', 'dunchongap', 'dunchong123')        for parent,dirnames,filenames in os.walk(directory):            for filename in filenames:                absoPath = os.path.join(parent,filename)                fileSuffix = xfer.file_extension(filename)                print fileSuffix                if (fileSuffix == '.gz'):                    print absoPath                    xfer.upload(absoPath)                    os.remove(filename)        time.sleep(3600)

0 0