Python连接sftp教程

(1)创建配置文件 config.ini

[sftp]
#远程路径 例如 in,子文件夹名称要有key
REMOTE =in
#本地路径
LOCAL = out
#主机
HOST= 127.0.0.1
#端口
PORT=22
#用户名
USERNAME =root
#密码
PASSWORD =root

(2)创建py

# coding: utf-8

import paramiko
import ConfigParser
import sys,os
import codecs
import stat
config = {}

def importConfig():
    conf = ConfigParser.ConfigParser()
    conf.readfp(codecs.open('config.ini',"r","utf-8-sig"))
    remote = conf.get('sftp','REMOTE').encode('utf-8')
    local =  conf.get('sftp','LOCAL').encode('utf-8')
    host =  conf.get('sftp','HOST').encode('utf-8')
    port = conf.get('sftp','PORT').encode('utf-8')
    username = conf.get('sftp','USERNAME').encode('utf-8')
    password = conf.get('sftp','PASSWORD').encode('utf-8')
    config['remote']= remote
    config['local']=local
    config['host'] = host
    config['port'] = port
    config['username'] = username
    config['password'] = password
    return config

def connect_sftp(config):
    trans = paramiko.Transport((config['host'], int(config['port']))) 
    trans.connect(username=config['username'],password=config['password'])
    sftp = paramiko.SFTPClient.from_transport(trans)  
    return sftp

def exists(sftp,path):
	try:
		sftp.stat(path)
		return True
	except IOError,e:
		if 'No such file' in str(e):
			return False
		else:
			return True
def download_sftp(sftp,local,remote):
    for f in sftp.listdir(remote):
        if str(f).find("key")!= -1:
            if not os.path.exists(local):
				os.makedirs(local)
            path1 = remote+"/"+f
            remote_path = path1
            local_path = local
            print ("正在下载"+path1 ).decode('utf-8').encode('gbk')
            sftp.get(remote_path,local_path)
            print (path1 +"下载完成").decode('utf-8').encode('gbk')
            print "\n"

if __name__ == '__main__':
    sftp = connect_sftp(importConfig())
    print "\n"
    print "开始准备下载...".decode('utf-8').encode('gbk')
    print "\n"
    remo = config['remote']
    remotes = remo.split("|")
    for remote in remotes:
		download_sftp(sftp,config['local'],remote)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈增林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值