示例#1
0
class FTP(Sftp, Command):
    def __init__(self, ):

        Sftp.__init__(self)
        Command.__init__(self)

        self.size = Size()

    def get_server_size(self, server_path=u'/python/voice/1/1.mp3'):
        ##获取服务器上文件大小

        filesize = self.size.get_server_size(command=self,
                                             server_path=server_path)
        return filesize

    def ftp_get(self, server_path=u'/python/books.html', local_floder=u''):
        ##下载服务器文件到本地

        filesize = self.get_server_size(server_path=server_path)
        self.sftp_get(server_path=server_path,
                      local_floder=local_floder,
                      filesize=filesize)

    def ftp_put(self,
                local_path=u'c:/users/sunzhiming/desktop/books.html',
                server_floder=u'/python'):
        #上传文件到服务器

        filesize = self.size.get_local_size(local_path)
        self.sftp_put(local_path=local_path,
                      server_floder=server_floder,
                      filesize=filesize)
示例#2
0
文件: sftp.py 项目: chinaylssly/ftp
    def sftp_get(self, server_path, local_floder='', filesize='1K'):

        ##get方法,未指定local_floder,默认保存在当前路径下

        filename = server_path.rsplit('/', 1)[-1]

        if local_floder:
            local_path = u'%s/%s' % (local_floder, filename)
        else:
            local_path = filename

        if os.path.exists(local_path):

            local_size = Size.get_local_size(local_path)
            server_size = filesize
            diff_size = server_size - local_size

            putty_diff_size = Size.putty_size(size=diff_size)

            log = u'size of server_path= %s - size of local_path= %s is :%s' % (
                server_path, local_path, putty_diff_size)
            logging.info(log)
            print log

            if diff_size < 0:
                ##本地文件大于服务器文件,说明不是同一个文件,暂不做处理
                flag = None
                pass

            elif diff_size < 1024:
                ##说明两个文件差异不大,可以认为文件以及下载完成
                flag = False

            else:
                ##两个文件差异1024B,认为文件未下载完毕
                log = u'local_path= %s exist' % local_path
                print log
                logging.info(log)
                flag = True

        else:
            #文件不存在,文件尚未下载

            flag = True

        if flag:

            ##flag 用于标识是否开启下载

            try:

                putty_server_size = Size.putty_size(filesize)

                log = u'from %s download %s,filesize=%s' % (
                    server_path, local_path, putty_server_size)
                print log
                logging.info(log)

                t1 = time()
                self.sftp.get(server_path, local_path)
                t2 = time()
                t = t2 - t1

                log = u'successfully download %s to %s,cost time=%.2f second' % (
                    server_path, local_path, t)
                print log
                logging.info(log)

            except:

                log = format_exc()
                logging.info(log)
                print log