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网络编程之数据传输UDP实例分析
May 20 Python
Python学习笔记整理3之输入输出、python eval函数
Dec 14 Python
python中os模块详解
Oct 14 Python
python dataframe astype 字段类型转换方法
Apr 11 Python
python 执行shell命令并将结果保存的实例
May 11 Python
用python生成与调用cntk模型代码演示方法
Aug 26 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
Jun 24 Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 Python
Python tkinter实现日期选择器
Feb 22 Python
用Python制作灯光秀短视频的思路详解
Apr 13 Python
利用Python网络爬虫爬取各大音乐评论的代码
Apr 13 Python
python中sqllite插入numpy数组到数据库的实现方法
Jun 21 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
php中获得视频时间总长度的另一种方法
2011/09/15 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
2017/05/30 PHP
php中的钩子理解及应用实例分析
2019/08/30 PHP
工作需要写的一个js拖拽组件
2011/07/28 Javascript
JavaScript高级程序设计 阅读笔记(二十) js错误处理
2012/08/14 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
2013/06/29 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
2013/07/09 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
js生成随机数方法和实例
2017/01/17 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
Angularjs使用过滤器完成排序功能
2017/09/20 Javascript
微信小程序之GET请求的实例详解
2017/09/29 Javascript
对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例讲解
2018/08/27 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
JavaScript实现图片合成下载的示例
2020/11/19 Javascript
python连接池实现示例程序
2013/11/26 Python
Python中的startswith和endswith函数使用实例
2014/08/25 Python
python基础教程之Hello World!
2014/08/29 Python
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
python3音乐播放器简单实现代码
2020/04/20 Python
python 连接sqlite及简单操作
2017/06/30 Python
python将文本中的空格替换为换行的方法
2018/03/19 Python
python多任务及返回值的处理方法
2019/01/22 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
PyTorch中permute的用法详解
2019/12/30 Python
pytorch进行上采样的种类实例
2020/02/18 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
英国银首饰公司:e&e Jewellery
2021/02/11 全球购物
函授本科自我鉴定
2013/11/03 职场文书
业务部门经理岗位职责
2014/02/23 职场文书
社区党员干部承诺书
2015/05/04 职场文书