python提供了一个第三方模块paramiko,通过这个模块可以实现两台机器之间的网络连接,sftp是paramiko的一个方法,使用sftp可以在两台机器之间互相传输
拷贝文件。然而paramiko的sftp只能拷贝文件,不能拷贝文件夹。要实现文件夹的拷贝,可以这样子思考:使用深度搜索遍历源目录,若是文件,直接拷贝到
目的目录;若是文件夹,则先在目的目录建立一个子目录,然后遍历子目录...使用递归函数,可以达到完全拷贝目录的目的。实现代码如下:
1.获取一个sftp句柄
import paramiko
#建立连接,获取sftp句柄
def sftp_connect(username,password,host,port=22):
client= None
sftp= None
try:
client= paramiko.Transport((host,port))
except Exception as error:
print error
else:
try:
client.connect(username=username, password=password)
except Exception as error:
print error
else:
sftp= paramiko.SFTPClient.from_transport(client)
return client,sftp
#断开连接
def disconnect(client):
try:
client.close()
except Exception as error:
print error
2.从远程机器上下载文件(夹)到本地
import os
import sys
from statimport S_ISDIR as isdir
def _check_local(local):
if not os.path.exists(local):
try:
os.mkdir(local)
except IOError as err:
print err
def get(sftp,remote,local):