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迭代器和生成器介绍
Mar 06 Python
Python3指定路径寻找符合匹配模式文件
May 22 Python
Python3中的真除和Floor除法用法分析
Mar 16 Python
基于python yield机制的异步操作同步化编程模型
Mar 18 Python
python实现C4.5决策树算法
Aug 29 Python
python 实现分页显示从es中获取的数据方法
Dec 26 Python
Python如何使用argparse模块处理命令行参数
Dec 11 Python
Python matplotlib修改默认字体的操作
Mar 05 Python
Python描述符descriptor使用原理解析
Mar 21 Python
Django基于客户端下载文件实现方法
Apr 21 Python
Python内置函数locals和globals对比
Apr 28 Python
python通过opencv调用摄像头操作实例分析
Jun 07 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+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
PHP 类相关函数的使用详解
2013/05/10 PHP
PHP实现合并discuz用户
2015/08/05 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
php+js实现的无刷新下载文件功能示例
2019/08/23 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
javascript document.compatMode兼容性
2010/02/23 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
javascript 利用arguments实现可变长参数
2016/11/21 Javascript
微信小程序 UI与容器组件总结
2017/02/21 Javascript
JavaScript实现单例模式实例分享
2017/12/22 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
2019/04/26 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
Python求均值,方差,标准差的实例
2019/06/29 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
python图形用户接口实例详解
2019/12/16 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
python+flask编写一个简单的登录接口
2020/11/13 Python
python数据抓取3种方法总结
2021/02/07 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
MYSQL支持事务吗
2013/08/09 面试题
人力管理专业毕业生求职信
2014/02/27 职场文书
学前班评语大全
2014/05/04 职场文书
奥巴马的演讲稿
2014/05/15 职场文书
个人优缺点总结
2015/02/28 职场文书
Python机器学习三大件之一numpy
2021/05/10 Python