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之做一个小游戏
Sep 28 Python
11个并不被常用但对开发非常有帮助的Python库
Mar 31 Python
Python中函数的多种格式和使用实例及小技巧
Apr 13 Python
Python实现统计文本文件字数的方法
May 05 Python
Python中用psycopg2模块操作PostgreSQL方法
Nov 28 Python
基于并发服务器几种实现方法(总结)
Dec 29 Python
python实现mysql的读写分离及负载均衡
Feb 04 Python
python 爬虫 批量获取代理ip的实例代码
May 22 Python
对pandas的算术运算和数据对齐实例详解
Dec 22 Python
Python判断telnet通不通的实例
Jan 26 Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 Python
python 利用opencv实现图像网络传输
Nov 12 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 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
php文件缓存方法总结
2016/03/16 PHP
javascrip客户端验证文件大小及文件类型并重置上传
2011/01/12 Javascript
nodejs教程 安装express及配置app.js文件的详细步骤
2013/05/11 NodeJs
js导出格式化的excel 实例方法
2013/07/17 Javascript
Script标签与访问HTML页面详解
2014/01/10 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
PHP7新特性简述
2017/06/11 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
node.js 发布订阅模式的实例
2017/09/10 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
解决element ui select下拉框不回显数据问题的解决
2019/02/20 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
vue实现购物车选择功能
2020/01/10 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
Python设计模式之中介模式简单示例
2018/01/09 Python
Python中反射和描述器总结
2018/09/23 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
法国家具及室内配件店:home24
2017/01/21 全球购物
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
台湾专柜女包:KINAZ
2019/12/26 全球购物
教育学专业毕业生的自我评价
2013/11/21 职场文书
六五普法规划实施方案
2014/03/21 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
大班下学期个人总结
2015/02/13 职场文书
环境卫生整治简报
2015/07/20 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电
Spring Boot配合PageHelper优化大表查询数据分页
2022/04/20 Java/Android