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设计模式之观察者模式原理与用法详解

    Python设计模式之观察者模式原理与用法详解

    这篇文章主要介绍了Python设计模式之观察者模式,简单讲述了观察者模式的概念、原理并结合实例形式分析了Python实现与使用方法,需要的朋友可以参考下
    2019-01-01
  • Tkinter组件Checkbutton的具体使用

    Tkinter组件Checkbutton的具体使用

    Checkbutton组件用于实现确定是否选择的按钮,本文主要介绍了Tkinter组件Checkbutton的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • ubuntu中配置pyqt4环境教程

    ubuntu中配置pyqt4环境教程

    本文给大家分享的是在Ubuntu系统中配置pyqt4的详细教程,有需要的小伙伴可以参考下
    2017-12-12
  • Python first-order-model实现让照片动起来

    Python first-order-model实现让照片动起来

    本文将利用first-order-model实现让照片动起来,除了表情驱动照片,还可以姿态迁移。文中的示例代码讲解详细,感兴趣的可以尝试一下
    2022-06-06
  • python3.6+django2.0+mysql搭建网站过程详解

    python3.6+django2.0+mysql搭建网站过程详解

    这篇文章主要介绍了python3.6+django2.0+mysql搭建网站过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 一起解密Python中的*args和**kwargs无限可能的函数参数

    一起解密Python中的*args和**kwargs无限可能的函数参数

    这篇文章主要来跟大家一起解密Python中的*args和**kwargs无限可能的函数参数使用的灵活性,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Python页面加载的等待方式总结

    Python页面加载的等待方式总结

    在本篇内容里小编给大家整理的是关于Python页面加载的等待方式总结内容,有需要的朋友们可以参考下。
    2021-02-02
  • 基于Python实现打哈欠检测详解

    基于Python实现打哈欠检测详解

    这篇文章主要介绍了如何利用Python+OpenCV实现人打哈欠检测,文中的示例代码讲解详细,对我们学习Python有一定帮助,感兴趣的可以了解一下
    2022-04-04
  • Python利用socket实现多进程的端口扫描器

    Python利用socket实现多进程的端口扫描器

    作为开发人员经常需要查看服务的端口开启状态判断服务是否宕机。特别是部署的服务比较多的情况下,可能存在几个甚至几十个服务端口的占用。所以本文将利用socket实现多进程的端口扫描器,需要的可以参考一下
    2022-12-12
  • Python中的函数参数传递问题

    Python中的函数参数传递问题

    这篇文章主要介绍了Python中的函数参数传递问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01

最新评论