Python使用sftp实现上传和下载功能(实例代码)

 更新时间:2017年03月14日 10:01:21   作者:tianpy5  
在Python中可以使用paramiko模块中的sftp登陆远程主机,实现上传和下载功能。接下来通过本文给大家介绍Python使用sftp实现上传和下载功能,需要的朋友参考下

在Python中可以使用paramiko模块中的sftp登陆远程主机,实现上传和下载功能。

1.功能实现

根据输入参数判断是文件还是目录,进行上传和下载

本地参数local需要与远程参数remote类型一致,文件以文件名结尾,目录以\结尾

上传和下载的本地和远程目录需要存在

异常捕获

2.代码实现

#!/usr/bin/python
# coding=utf-8
import paramiko
import os
def sftp_upload(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 os.listdir(local):#遍历本地目录
        sftp.put(os.path.join(local+f),os.path.join(remote+f))#上传目录中的文件
    else:
      sftp.put(local,remote)#上传文件
  except Exception,e:
    print('upload exception:',e)
  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,e:
    print('download exception:',e)
  sf.close()
if __name__ == '__main__':
  host = '192.168.1.2'#主机
  port = 22 #端口
  username = 'root' #用户名
  password = '123456' #密码
  local = 'F:\\sftptest\\'#本地文件或目录,与远程一致,当前为windows目录格式,window目录中间需要使用双斜线
  remote = '/opt/tianpy5/python/test/'#远程文件或目录,与本地一致,当前为linux目录格式
  sftp_upload(host,port,username,password,local,remote)#上传
  #sftp_download(host,port,username,password,local,remote)#下载

3.总结

以上代码实现了文件和目录的上传和下载,可以单独上传和下载文件,也可以批量上传和下载目录中的文件,基本实现了所要的功能,但是针对目录不存在的情况,以及上传和下载到多台主机上的情况,还有待完善。

相关文章

  • 昨晚我用python帮隔壁小姐姐P证件照然后发现

    昨晚我用python帮隔壁小姐姐P证件照然后发现

    大家好,我是Lex 喜欢欺负超人那个Lex 建议大家收藏哦,以后帮小姐姐P自拍,证件照,调尺寸,背景,抠图,直接10行代码搞定,瞬间高大上
    2021-08-08
  • Python SQLite3数据库操作类分享

    Python SQLite3数据库操作类分享

    这篇文章主要介绍了Python SQLite3数据库操作类分享,需要的朋友可以参考下
    2014-06-06
  • Python 详解基本语法_函数_返回值

    Python 详解基本语法_函数_返回值

    这篇文章主要介绍了Python 详解基本语法_函数_返回值的相关资料,需要的朋友可以参考下
    2017-01-01
  • Python字符串格式化format()方法运用实例

    Python字符串格式化format()方法运用实例

    这篇文章主要给大家介绍了关于Python字符串格式化format()方法运用实例的相关资料,字符串格式化是Python编程中十分常用的部分,它可以帮助我们将更具可读性的数据输出到控制台或写入文件,需要的朋友可以参考下
    2023-08-08
  • Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】

    Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】

    这篇文章主要介绍了Python HTML解析器BeautifulSoup用法,结合实例形式详细分析了第三方库BeautifulSoup实现的爬虫解析器功能具体操作技巧,需要的朋友可以参考下
    2019-04-04
  • 一文详细介绍numpy在python中的用法

    一文详细介绍numpy在python中的用法

    这篇文章主要介绍了numpy在python中的用法,NumPy是Python科学计算库,主要用于处理大型多维数组和矩阵运算,它提供了多种函数进行数组操作,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-01-01
  • 使用Python绘制实时的动态折线图

    使用Python绘制实时的动态折线图

    这篇文章主要为大家详细介绍了如何使用Python绘制实时的动态折线图,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-11-11
  • win7 x64系统中安装Scrapy的方法

    win7 x64系统中安装Scrapy的方法

    这篇文章主要介绍了win7 x64系统中安装Scrapy的方法,图文并茂一步步的教你如何安装Scrapy,需要的朋友可以参考下
    2018-11-11
  • python浅谈一下线程间通信之队列

    python浅谈一下线程间通信之队列

    本篇文章介绍了为什么需要线程间通信,以及通信方式有哪些,最后每种通信方式都举了一个例子,最常用的还是共享变量的方式来进行线程间通信。感兴趣的朋友可以阅读本文
    2023-04-04
  • python之DataFrame实现excel合并单元格

    python之DataFrame实现excel合并单元格

    这篇文章主要为大家详细介绍了python之DataFrame实现excel合并单元格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04

最新评论