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文件右键找不到IDLE打开项解决办法
Jun 08 Python
Python基于递归算法实现的走迷宫问题
Aug 04 Python
Python通过调用mysql存储过程实现更新数据功能示例
Apr 03 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
python保存数据到本地文件的方法
Jun 23 Python
python3实现指定目录下文件sha256及文件大小统计
Feb 25 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
python中几种自动微分库解析
Aug 29 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
Jul 31 Python
Python求解排列中的逆序数个数实例
May 03 Python
pycharm第三方库安装失败的问题及解决经验分享
May 09 Python
怎么快速自学python
Jun 22 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/03/06 PHP
javascript 框架小结 个人工作经验
2009/06/13 Javascript
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
js转义字符介绍
2013/11/05 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
fastclick插件导致日期(input[type="date"])控件无法被触发该如何解决
2015/11/09 Javascript
基于jquery实现即时检查格式是否正确的表单
2016/05/06 Javascript
解决AjaxFileupload 上传时会出现连接重置的问题
2017/07/07 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
跟老齐学Python之关于类的初步认识
2014/10/11 Python
Python操作MySQL简单实现方法
2015/01/26 Python
python用reduce和map把字符串转为数字的方法
2016/12/19 Python
用Python实现数据的透视表的方法
2018/11/16 Python
python检测IP地址变化并触发事件
2018/12/26 Python
Python3+Appium安装使用教程
2019/07/05 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
python3注册全局热键的实现
2020/03/22 Python
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
学前教育专业毕业生自荐信
2013/10/03 职场文书
银行个人求职自荐信范文
2013/12/16 职场文书
鲜果饮品店创业计划书
2014/01/21 职场文书
团支部推优材料
2014/05/21 职场文书
绿色出行口号
2014/06/18 职场文书
领导党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
银行给客户的感谢信
2015/01/23 职场文书
欢迎词怎么写
2015/01/23 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
python实现图片九宫格分割的示例
2021/04/25 Python
Java实现学生管理系统(IO版)
2022/02/24 Java/Android
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技