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


Posted in Python onMarch 14, 2017

在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下的XSLT API进行web开发的简单教程
Apr 15 Python
Python统计文件中去重后uuid个数的方法
Jul 30 Python
Python的collections模块中namedtuple结构使用示例
Jul 07 Python
Python实现的简单dns查询功能示例
May 24 Python
python中numpy的矩阵、多维数组的用法
Feb 05 Python
python版opencv摄像头人脸实时检测方法
Aug 03 Python
浅谈Pandas Series 和 Numpy array中的相同点
Jun 28 Python
解决django 向mysql中写入中文字符出错的问题
May 18 Python
Python中的wordcloud库安装问题及解决方法
May 27 Python
Python类的继承super相关原理解析
Oct 22 Python
Python+unittest+DDT实现数据驱动测试
Nov 30 Python
python中Matplotlib绘制直线的实例代码
Jul 04 Python
Python实现Youku视频批量下载功能
Mar 14 #Python
Python实现视频下载功能
Mar 14 #Python
python 实现自动远程登陆scp文件实例代码
Mar 13 #Python
python executemany的使用及注意事项
Mar 13 #Python
Python的标准模块包json详解
Mar 13 #Python
python中pandas.DataFrame排除特定行方法示例
Mar 12 #Python
Python中functools模块函数解析
Mar 12 #Python
You might like
浅析THINKPHP的addAll支持的最大数据量
2015/02/03 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
jQuery 表单验证扩展(四)
2010/10/20 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
Vue实现移动端页面切换效果【推荐】
2018/11/13 Javascript
利用js-cookie实现前端设置缓存数据定时失效
2019/06/18 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
Pandas探索之高性能函数eval和query解析
2017/10/28 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
python判断完全平方数的方法
2018/11/13 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
python elasticsearch环境搭建详解
2019/09/02 Python
python matplotlib拟合直线的实现
2019/11/19 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
python中Mako库实例用法
2020/12/31 Python
家得宝墨西哥官网:The Home Depot墨西哥
2019/11/18 全球购物
什么是URL
2015/12/13 面试题
Why do we need Unit test
2013/01/03 面试题
党的群众路线教育实践方案
2014/05/11 职场文书
优秀团干部个人事迹
2014/05/29 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书
超市食品安全承诺书
2015/04/29 职场文书
经典祝酒词大全
2015/08/12 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
2021/11/11 Python
利用js实现简单开关灯代码
2021/11/23 Javascript
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript