sftp.py ,python基础语法

问题描述

sftp.py ,python基础语法

#!/usr/bin/env python

-----------------------------------------------------------------------------

sftp.py

Author: Andyrat

Date: 2014/01/07 09:39:38

import sys
import os
import time

try:
from paramiko import SSHClient
from paramiko import AutoAddPolicy
except e:
print 'Error:Need module paramiko,TRY:apt-get install python-paramiko.'

#------- modify here ----------------------------------------------

download file from this server

serFr = {'ip':'10.13.20.5','port':3322,'username':'admin','password':'P@ssword',
'rdirname':'/U12/Andy/0802/', # remote dir path
'ldirname':'./h0802/', # local dir path
}

upload file to this server

serTo = {'ip':'10.13.20.5','port':3322,'username':'admin','password':'P@ssword',
'rdirname':'/U12/Andy/0803/', # remote dir path
'ldirname':'./h0802/', # local dir path
}
#------------------------------------------------------------------

class FTPSync:
def init(self,host):
'''connect to server'''
self.server = host
self.ssh = SSHClient()
self.ssh.set_missing_host_key_policy(AutoAddPolicy())

def login(self):
    self.ssh.connect(self.server['ip'],self.server['port'],self.server['username'],self.server['password'],allow_agent=False)
    self.sftp = self.ssh.open_sftp()

def get_file(self,ftp_path,local_path='.'):
    self.sftp.get(ftp_path,local_path)

def put_file(self,local_path,ftp_path='.'):
    self.sftp.put(local_path,ftp_path)

def get_dir(self,ftp_path,local_path='.',begin=True):
    ftp_path = ftp_path.rstrip('/')
    if self._is_ftp_dir(ftp_path):
        if begin:
            if os.path.isdir(local_path):
                self._rm_loc_dir(local_path)
            else:
                os.makedirs(local_path)
            local_path = os.path.join(local_path,os.path.basename(ftp_path))

        if not os.path.isdir(local_path):
            os.makedirs(local_path)

        self._cd_ftp_dir(ftp_path)
        ftp_files = self._get_ftp_filelst()
        for afile in ftp_files:
            local_file = os.path.join(local_path,afile)

            if self._is_ftp_dir(afile):
                self.get_dir(afile,local_file,False)
            else:
                self.get_file(afile,local_file)
        self._cd_ftp_dir('..')
        return
    else:
        print 'ERROR:The dir:%s is not exist' %ftp_path
        return

def put_dir(self,local_path,ftp_path,begin=True):
    ftp_path = ftp_path.rstrip('/')
    if os.path.isdir(local_path):
        if begin:
            if self._is_ftp_dir(ftp_path):
                self._rm_ftp_dir(ftp_path)
            else:
                self._mk_ftp_dir(ftp_path)
            ftp_path = os.path.join(ftp_path,os.path.basename(local_path))

        if not self._is_ftp_dir(ftp_path):
            self._mk_ftp_dir(ftp_path)

        os.chdir(local_path)
        local_files = os.listdir('.')
        for afile in local_files:
            if os.path.isdir(afile):
                new_ftp_path = os.path.join(ftp_path,afile)
                self.put_dir(afile,new_ftp_path,False)
            else:
                self.put_file(afile,os.path.join(ftp_path,afile))
        os.chdir('..')
        return
    else:
        print 'ERROR:The dir:%s is not exist' %local_path
        return

def close(self):
    self.sftp.close()

def _is_ftp_dir(self,path):
    try:
        attr = self.sftp.lstat(path)
        attr = str(attr)
        if attr.startswith('d'):
            return True
        else:
            return False
    except:
        return False

def _rm_ftp_dir(self,ftp_path):
    ftp_path = ftp_path.rstrip('/')
    if self._is_ftp_dir(ftp_path):
        self._cd_ftp_dir(ftp_path)
        ftp_files = self._get_ftp_filelst()
        for afile in ftp_files:
            if self._is_ftp_dir(afile):
                self._rm_ftp_dir(afile)
            else:
                #print 'sftp.remove:',afile
                self.sftp.remove(afile)
        self._cd_ftp_dir('..')
        #print 'sftp.rmdir:',ftp_path
        self.sftp.rmdir(ftp_path)
        return

def _rm_loc_dir(self,Dir):
    if os.path.isdir( Dir ):
        paths = os.listdir( Dir )
        for path in paths:
            filePath = os.path.join( Dir, path )
            if os.path.isfile( filePath ):
                os.remove( filePath )
            elif os.path.isdir( filePath ):
                self._rm_loc_dir(filePath)

def _cd_ftp_dir(self,path):
    self.sftp.chdir(path)

def _get_ftp_filelst(self):
    return self.sftp.listdir()

def _mk_ftp_dir(self,path):
    self.sftp.mkdir(path)

if name == '__main__':

ser1 = FTPSync(serFr)
ser1.login()
ser1.get_dir(serFr['rdirname'],serFr['ldirname'])
ser1.close()

ser2 = FTPSync(serTo)
ser2.login()
ser2.put_dir(serTo['ldirname'],serTo['rdirname'])
ser2.close()

解决方案

#!/usr/bin/env python

-----------------------------------------------------------------------------

sftp.py

Author: Andyrat

Date: 2014/01/07 09:39:38

import sys
import os
import time

try:
from paramiko import SSHClient
from paramiko import AutoAddPolicy
except e:
print 'Error:Need module paramiko,TRY:apt-get install python-paramiko.'

#------- modify here ----------------------------------------------

download file from this server

serFr = {'ip':'10.13.20.5','port':3322,'username':'admin','password':'P@ssword',
'rdirname':'/U12/Andy/0802/', # remote dir path
'ldirname':'./h0802/', # local dir path
}

upload file to this server

serTo = {'ip':'10.13.20.5','port':3322,'username':'admin','password':'P@ssword',
'rdirname':'/U12/Andy/0803/', # remote dir path
'ldirname':'./h0802/', # local dir path
}
#------------------------------------------------------------------

class FTPSync:
def init(self,host):
'''connect to server'''
self.server = host
self.ssh = SSHClient()
self.ssh.set_missing_host_key_policy(AutoAddPolicy())

def login(self):
    self.ssh.connect(self.server['ip'],self.server['port'],self.server['username'],self.server['password'],allow_agent=False)
    self.sftp = self.ssh.open_sftp()

def get_file(self,ftp_path,local_path='.'):
    self.sftp.get(ftp_path,local_path)

def put_file(self,local_path,ftp_path='.'):
    self.sftp.put(local_path,ftp_path)

def get_dir(self,ftp_path,local_path='.',begin=True):
    ftp_path = ftp_path.rstrip('/')
    if self._is_ftp_dir(ftp_path):
        if begin:
            if os.path.isdir(local_path):
                self._rm_loc_dir(local_path)
            else:
                os.makedirs(local_path)
            local_path = os.path.join(local_path,os.path.basename(ftp_path))

        if not os.path.isdir(local_path):
            os.makedirs(local_path)

        self._cd_ftp_dir(ftp_path)
        ftp_files = self._get_ftp_filelst()
        for afile in ftp_files:
            local_file = os.path.join(local_path,afile)

            if self._is_ftp_dir(afile):
                self.get_dir(afile,local_file,False)
            else:
                self.get_file(afile,local_file)
        self._cd_ftp_dir('..')
        return
    else:
        print 'ERROR:The dir:%s is not exist' %ftp_path
        return

def put_dir(self,local_path,ftp_path,begin=True):
    ftp_path = ftp_path.rstrip('/')
    if os.path.isdir(local_path):
        if begin:
            if self._is_ftp_dir(ftp_path):
                self._rm_ftp_dir(ftp_path)
            else:
                self._mk_ftp_dir(ftp_path)
            ftp_path = os.path.join(ftp_path,os.path.basename(local_path))

        if not self._is_ftp_dir(ftp_path):
            self._mk_ftp_dir(ftp_path)

        os.chdir(local_path)
        local_files = os.listdir('.')
        for afile in local_files:
            if os.path.isdir(afile):
                new_ftp_path = os.path.join(ftp_path,afile)
                self.put_dir(afile,new_ftp_path,False)
            else:
                self.put_file(afile,os.path.join(ftp_path,afile))
        os.chdir('..')
        return
    else:
        print 'ERROR:The dir:%s is not exist' %local_path
        return

def close(self):
    self.sftp.close()

def _is_ftp_dir(self,path):
    try:
        attr = self.sftp.lstat(path)
        attr = str(attr)
        if attr.startswith('d'):
            return True
        else:
            return False
    except:
        return False

def _rm_ftp_dir(self,ftp_path):
    ftp_path = ftp_path.rstrip('/')
    if self._is_ftp_dir(ftp_path):
        self._cd_ftp_dir(ftp_path)
        ftp_files = self._get_ftp_filelst()
        for afile in ftp_files:
            if self._is_ftp_dir(afile):
                self._rm_ftp_dir(afile)
            else:
                #print 'sftp.remove:',afile
                self.sftp.remove(afile)
        self._cd_ftp_dir('..')
        #print 'sftp.rmdir:',ftp_path
        self.sftp.rmdir(ftp_path)
        return

def _rm_loc_dir(self,Dir):
    if os.path.isdir( Dir ):
        paths = os.listdir( Dir )
        for path in paths:
            filePath = os.path.join( Dir, path )
            if os.path.isfile( filePath ):
                os.remove( filePath )
            elif os.path.isdir( filePath ):
                self._rm_loc_dir(filePath)

def _cd_ftp_dir(self,path):
    self.sftp.chdir(path)

def _get_ftp_filelst(self):
    return self.sftp.listdir()

def _mk_ftp_dir(self,path):
    self.sftp.mkdir(path)

if name == '__main__':

ser1 = FTPSync(serFr)
ser1.login()
ser1.get_dir(serFr['rdirname'],serFr['ldirname'])
ser1.close()

ser2 = FTPSync(serTo)
ser2.login()
ser2.put_dir(serTo['ldirname'],serTo['rdirname'])
ser2.close()

解决方案二:

#!/usr/bin/env python

-----------------------------------------------------------------------------

sftp.py

Author: Andyrat

Date: 2014/01/07 09:39:38

import sys
import os
import time

try:
from paramiko import SSHClient
from paramiko import AutoAddPolicy
except e:
print 'Error:Need module paramiko,TRY:apt-get install python-paramiko.'

#------- modify here ----------------------------------------------

download file from this server

serFr = {'ip':'10.13.20.5','port':3322,'username':'admin','password':'P@ssword',
'rdirname':'/U12/Andy/0802/', # remote dir path
'ldirname':'./h0802/', # local dir path
}

upload file to this server

serTo = {'ip':'10.13.20.5','port':3322,'username':'admin','password':'P@ssword',
'rdirname':'/U12/Andy/0803/', # remote dir path
'ldirname':'./h0802/', # local dir path
}
#------------------------------------------------------------------

class FTPSync:
def init(self,host):
'''connect to server'''
self.server = host
self.ssh = SSHClient()
self.ssh.set_missing_host_key_policy(AutoAddPolicy())

def login(self):
    self.ssh.connect(self.server['ip'],self.server['port'],self.server['username'],self.server['password'],allow_agent=False)
    self.sftp = self.ssh.open_sftp()

def get_file(self,ftp_path,local_path='.'):
    self.sftp.get(ftp_path,local_path)

def put_file(self,local_path,ftp_path='.'):
    self.sftp.put(local_path,ftp_path)

def get_dir(self,ftp_path,local_path='.',begin=True):
    ftp_path = ftp_path.rstrip('/')
    if self._is_ftp_dir(ftp_path):
        if begin:
            if os.path.isdir(local_path):
                self._rm_loc_dir(local_path)
            else:
                os.makedirs(local_path)
            local_path = os.path.join(local_path,os.path.basename(ftp_path))

        if not os.path.isdir(local_path):
            os.makedirs(local_path)

        self._cd_ftp_dir(ftp_path)
        ftp_files = self._get_ftp_filelst()
        for afile in ftp_files:
            local_file = os.path.join(local_path,afile)

            if self._is_ftp_dir(afile):
                self.get_dir(afile,local_file,False)
            else:
                self.get_file(afile,local_file)
        self._cd_ftp_dir('..')
        return
    else:
        print 'ERROR:The dir:%s is not exist' %ftp_path
        return

def put_dir(self,local_path,ftp_path,begin=True):
    ftp_path = ftp_path.rstrip('/')
    if os.path.isdir(local_path):
        if begin:
            if self._is_ftp_dir(ftp_path):
                self._rm_ftp_dir(ftp_path)
            else:
                self._mk_ftp_dir(ftp_path)
            ftp_path = os.path.join(ftp_path,os.path.basename(local_path))

        if not self._is_ftp_dir(ftp_path):
            self._mk_ftp_dir(ftp_path)

        os.chdir(local_path)
        local_files = os.listdir('.')
        for afile in local_files:
            if os.path.isdir(afile):
                new_ftp_path = os.path.join(ftp_path,afile)
                self.put_dir(afile,new_ftp_path,False)
            else:
                self.put_file(afile,os.path.join(ftp_path,afile))
        os.chdir('..')
        return
    else:
        print 'ERROR:The dir:%s is not exist' %local_path
        return

def close(self):
    self.sftp.close()

def _is_ftp_dir(self,path):
    try:
        attr = self.sftp.lstat(path)
        attr = str(attr)
        if attr.startswith('d'):
            return True
        else:
            return False
    except:
        return False

def _rm_ftp_dir(self,ftp_path):
    ftp_path = ftp_path.rstrip('/')
    if self._is_ftp_dir(ftp_path):
        self._cd_ftp_dir(ftp_path)
        ftp_files = self._get_ftp_filelst()
        for afile in ftp_files:
            if self._is_ftp_dir(afile):
                self._rm_ftp_dir(afile)
            else:
                #print 'sftp.remove:',afile
                self.sftp.remove(afile)
        self._cd_ftp_dir('..')
        #print 'sftp.rmdir:',ftp_path
        self.sftp.rmdir(ftp_path)
        return

def _rm_loc_dir(self,Dir):
    if os.path.isdir( Dir ):
        paths = os.listdir( Dir )
        for path in paths:
            filePath = os.path.join( Dir, path )
            if os.path.isfile( filePath ):
                os.remove( filePath )
            elif os.path.isdir( filePath ):
                self._rm_loc_dir(filePath)

def _cd_ftp_dir(self,path):
    self.sftp.chdir(path)

def _get_ftp_filelst(self):
    return self.sftp.listdir()

def _mk_ftp_dir(self,path):
    self.sftp.mkdir(path)

if name == '__main__':

ser1 = FTPSync(serFr)
ser1.login()
ser1.get_dir(serFr['rdirname'],serFr['ldirname'])
ser1.close()

ser2 = FTPSync(serTo)
ser2.login()
ser2.put_dir(serTo['ldirname'],serTo['rdirname'])
ser2.close()

解决方案三:

-* - coding: UTF-8 -* -

import gl

def fun():

print gl._a

print gl._b

fun()

print "-----------for-----------"

for i in range(0,5):

print i;
continue
print "2233"

break

else:
print i

print "-----------while-----------"

while True:
print i
break
else:
print "a"

print "-----------def1-----------"

def sumOf(a, b):
return a + b

print sumOf(3,4)

print "-----------def2-----------"

def func():
global x
print "x is ", x
x = 1

x = 3
func()
print x

print "-----------def3-----------"

def say(msg, times = 1):
print msg * times

say("peter")
say("peter", 3)

print "-----------def4-----------"

print "-----------def5-----------"

def func():
'''This is self-defined function
这是自定义函数

Do nothing
什么都不做'''
pass

print func.__doc__

时间: 2024-11-01 21:25:35

sftp.py ,python基础语法的相关文章

Python 基础语法_Python脚本文件结构

前言 Python基础语法这一章,主要记录了Python的文件结构.逻辑运算符.算术操作符.控制流语句.输入和输出语句.函数.对象.类等方面的内容.在了解了Python的数据类型之后,结合之前的要点来一起继续学习. 软件环境 系统  UbuntuKylin 14.04 软件  Python-2.7.6 IPython-4.0.0 Python Script文件结构 Python Script 是应用广泛的一种批量自动化处理方案,同时任何的.py扩展文件在Python执行程序中都可以充当Modul

python基础语法

合法的python标识符: python标识符字符串规则和其他大部分用c编写的高级语言类似: 第一个字符必须是字母或是下划线: 剩下的字符可以是字母和数字或下划线: 大小写敏感: _xxx 不用"from module  import  * "导入: _xxx_ 系统定义名字: _xxx 类中的私有变量名 : 文档Python 还提供了一个机制,可以通过__doc__特别变量,动态获得文档字串.在模块,类声明,或函数声明中第一个没有赋值的字符串可以用属性 obj.__doc__来进行访

Python基础语法-常量与变量

Python是一门强类型的动态语言. 字面常量,变量没有类型,变量只是在特定的时间指向特定的对象而已,变量所指向的对象是有类型的. 变量:变量在赋值时被创建,它可以是任何对象的引用,但必须在引用前被赋值. 举例来说:当我们如下赋值时: a = 3 # 给一个对象3赋予变量a 对于上面的赋值,Python将会明确的执行3个步骤来响应这个语句:  创建一个对象代表值3:  如果不存在变量a,就创建变量a:  把变量a与新创建的对象3关联.  变量随着赋值操作出现的.变量和对象是被存储在不同的内存空间

Python学习笔记(二)基础语法_python

学习Python,基本语法不是特别难,有了C的基本知识,理解比较容易.本文的主要内容是Python基础语法,学完后,能熟练使用就好.(开发环境依然是Python2.7,简单使用)一,基本知识1,不需要预先定义数据类型(此说法值得商榷,姑且这么说吧),这是与其他语言的最大不同(如C,C++,C#,Delphi等) 复制代码 代码如下:  >>> x=12 >>> y=13 >>> z=x+y >>> print z 25 注意:尽管变量

Python基本语法[二],python入门到精通[四] (转)

写在前面 python你不去认识它,可能没什么,一旦你认识了它,你就会爱上它 回到顶部 v正文开始:Python基本语法 1.定义常量: 之所以上篇博客介绍了定义变量没有一起介绍定义常量,是因为Python的常量相对其他语言,可能略显麻烦.不仅仅只是单靠const就可以完成常量定义的.在Python中定义常量需要用对象的方法来创建. 我们需要在Lib的目录下创建一个const.py的文件,lib目录下主要是放一些模块的东西 代码正文: class _const(object): class Co

Python基础01 Hello World!

原文:Python基础01 Hello World! 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   简单的'Hello World!'   Python命令行 假设你已经安装好了Python, 那么在Linux命令行输入: $python 将直接进入python.然后在命令行提示符>>>后面输入: >>>print 'Hello World!' 可以看到,随后在屏幕上输出: Hello Worl

python 基础知识

python 基础知识 本文所有内容是学习期间做的笔记,仅为个人查阅和复习方便而记录.所有内容均摘自:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 数据类型 整数 浮点数 字符串 如果字符串内部既包含'又包含",可以用转义字符\来转义. 多行字符串可以通过'''字符串内容'''来表示 r''表示''内部的字符串默认不转义 布尔值, true, false:布尔值可以用and.o

Python基础入门之seed()方法的使用

 这篇文章主要介绍了Python基础入门之seed()方法的使用,是Python学习当中的基础知识,需要的朋友可以参考下     seed() 设置生成随机数用的整数起始值.调用任何其他random模块函数之前调用这个函数. 语法 以下是seed()方法的语法: ? 1 seed ( [x] ) 注意:此函数是无法直接访问的,所以需要导入seed模块,然后需要使用random静态对象来调用这个函数. 参数 x -- 这是下一个随机数的种子.如果省略,则需要系统时间,以产生下一个随机数. 返回值

windows bat(批处理):基础语法

  windows bat(批处理)--基础语法 1. @ 行首有了它的话,这一行的命令就不显示了. 2. echo 2.1 echo [{on|off}] [message] 输出,回显. 2.2 on | off 它其实是一个开关命令,就是说它只有两种状态:打开和关闭.于是就有了echo on和echo off两个命令了. (1)echo off 只显示执行结果 (2)echo on (默认) 显示执行命令(除echo)和执行结果 (3)> 输出重定向 创建或清空文件,然后把数据输出到文件