• Python


    由于将blog从七牛云迁移到了阿里虚拟空间上,操作全部由ftp来完成,脚本由php写的,更换成python,
    后面更改成多线程上传吧,代码如下:

    # -*- coding:utf-8 -*-
    
    import sys
    import os
    import json
    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='/htdocs/'):
            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()
    
    
    if __name__ == '__main__':
        srcDir = r"./public"
        xfer = Xfer()
        xfer.setFtpParams('IP', 'username', 'password')
        xfer.upload(srcDir)
    
    
  • 相关阅读:
    JAVA005-基本数据类型变量的存储
    JAVA003-变量、数据类型
    Python_pandas数据处理_学习
    python_性能FPS
    DB_004_创建表
    DB_003_关系数据库标准语言(SQL)
    DB_002_数据库的创建和管理
    DB_001_概念模型设计
    虚幻蓝图学习笔记 简单VR功能实现
    虚幻蓝图学习笔记 制作第一人称(实现功能:捡枪,换枪,扔枪,仍炸弹等)(一)
  • 原文地址:https://www.cnblogs.com/pzblog/p/9087752.html
Copyright © 2020-2023  润新知