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设计模式之门面模式简单示例
Jan 09 Python
python素数筛选法浅析
Mar 19 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 27 Python
python 中如何获取列表的索引
Jul 02 Python
Python+Pyqt实现简单GUI电子时钟
Feb 22 Python
python Django里CSRF 对应策略详解
Aug 05 Python
Django项目创建到启动详解(最全最详细)
Sep 07 Python
30秒学会30个超实用Python代码片段【收藏版】
Oct 15 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
python中的split()函数和os.path.split()函数使用详解
Dec 21 Python
TensorFLow 变量命名空间实例
Feb 11 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
Sep 03 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
substr()函数中文版
2006/10/09 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
PHP设计模式之工厂模式实例总结
2017/09/01 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
对Angular.js Controller如何进行单元测试
2016/10/25 Javascript
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
使用JSON格式提交数据到服务端的实例代码
2018/04/01 Javascript
jQuery实现导航样式布局操作示例【可自定义样式布局】
2018/07/24 jQuery
ES10的13个新特性示例(小结)
2019/09/23 Javascript
JavaScript实现横版菜单栏
2020/03/17 Javascript
es6函数之rest参数用法实例分析
2020/04/18 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
vue如何搭建多页面多系统应用
2020/06/17 Javascript
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
跟老齐学Python之用Python计算
2014/09/12 Python
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
python爬虫请求头设置代码
2020/07/28 Python
python代码实现图书管理系统
2020/11/30 Python
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
新秀丽官方旗舰店:Samsonite拉杆箱、双肩包、皮具
2018/03/05 全球购物
比较基础的php面试题及答案-编程题
2012/10/14 面试题
汽车检测与维修个人求职信
2013/09/24 职场文书
绿色环保演讲稿
2014/05/10 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
小学语文复习计划
2015/01/19 职场文书
库房管理员岗位职责
2015/02/12 职场文书
nginx安装以及配置的详细过程记录
2021/09/15 Servers