python实现sftp上传和下载

python3 sftp上传使用的是paramiko模块

在这里插入图片描述

#!/usr/bin/python
# coding=utf-8
#sftp上传和下载单个文件上传和下载实现方式
import paramiko#引入包名
import os
def sftp_upload(host,port,username,password,local,remote):#定义一个类,使用此类需要传入6个参数
    sf = paramiko.Transport((host,port))
    sf.connect(username = username,password = password)
    sftp = paramiko.SFTPClient.from_transport(sf)
    try:
        if os.path.isdir(local):#判断本地参数是目录还是文件
            for f in os.listdir(local):#遍历本地目录
                sftp.put(os.path.join(local + f), os.path.join(remote + f))
        else:
            sftp.put(local, remote)#上传文件
    except Exception :
        print('upload error:')
    sf.close()
def sftp_download(host,port,username,password,local,remote):
    sf = paramiko.Transport((host,port))
    sf.connect(username = username,password = password)
    sftp = paramiko.SFTPClient.from_transport(sf)
    try:
        if os.path.isdir(local):#判断本地参数是目录还是文件
            for f in sftp.listdir(remote):#遍历远程目录
                sftp.get(os.path.join(remote+f),os.path.join(local+f))#下载目录中文件
        else:
            sftp.get(remote,local)#下载文件
    except Exception:
        print('download exception:')
    sf.close()
if __name__ == '__main__':
    host = ''#填写远程ftp服务器IP地址
    port = 22 #填写远程ftp服务器端口默认22
    username = '' #填写远程ftp服务器用户名
    password = '' #填写远程ftp服务器密码

    upload_local = 'test.py'#这里使用相对路径或绝对路径下的文件名,window路径下目录中间需要使用双斜线如G:\\test.py,
    upload_remote = '/xinjiang_photo/test.py'#这个填写把文件放到ftp服务器下目录和文件名,test.py可以更改成别的文件名
    sftp_upload(host,port,username,password,upload_local,upload_remote)#上传注意,upload_local现在设置的是本地文件名,如果是指成文件夹sftp_upload会把整个文件夹的内容全部上传到服务器端,upload_remote只是的是上传到远程ftp服务器下绝对路径及文件名,如果sftp_upload设置的是目录upload_remote也要设置成目录,

    down_local = 'T:\pythonxuexi\staff下载\zip\\111.zip'
    down_remote = '/xinjiang_photo/aaa.zip'
    sftp_download(host,port,username,password,down_local,down_remote)#例如这个意思就是下载aaa.zip到本地后文件名更改成111.zip
  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值