Python使用sftp实现上传和下载功能(实例代码)

发布时间 - 2026-01-11 00:09:48    点击率:

在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  # sftp上传和下载  # python实现sftp  # python实现从ftp服务器下载文件  # python操作ssh实现服务器日志下载的方法  # 用Python实现一个简单的能够上传下载的HTTP服务器  # python实现从ftp服务器下载文件的方法  # python 从远程服务器下载日志文件的程序  # python 从远程服务器下载东西的代码  # python paramiko利用sftp上传目录到远程的实例  # Python 使用SFTP和FTP实现对服务器的文件下载功能  # 上传  # 遍历  # 目录中  # 实现了  # 不存在  # 可以使用  # 所要  # 多台  # 上传文件  # utf  # usr  # bin  # coding  # import  # port  # username  # password  # host  # os 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速上传自定义模板至建站之星?  iOS正则表达式验证手机号、邮箱、身份证号等  javascript日期怎么处理_如何格式化输出  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  Laravel如何配置任务调度?(Cron Job示例)  如何快速搭建高效香港服务器网站?  Laravel如何使用Blade组件和插槽?(Component代码示例)  如何实现建站之星域名转发设置?  黑客入侵网站服务器的常见手法有哪些?  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  如何挑选优质建站一级代理提升网站排名?  教你用AI将一段旋律扩展成一首完整的曲子  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  Internet Explorer官网直接进入 IE浏览器在线体验版网址  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  javascript中的try catch异常捕获机制用法分析  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  英语简历制作免费网站推荐,如何将简历翻译成英文?  常州企业网站制作公司,全国继续教育网怎么登录?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  中山网站制作网页,中山新生登记系统登记流程?  javascript基于原型链的继承及call和apply函数用法分析  网页设计与网站制作内容,怎样注册网站?  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  Python文件操作最佳实践_稳定性说明【指导】  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  JavaScript如何操作视频_媒体API怎么控制播放  敲碗10年!Mac系列传将迎来「触控与联网」双革新  PHP 500报错的快速解决方法  详解jQuery中的事件  如何在云虚拟主机上快速搭建个人网站?  ,怎么在广州志愿者网站注册?  如何正确下载安装西数主机建站助手?  如何用西部建站助手快速创建专业网站?  太平洋网站制作公司,网络用语太平洋是什么意思?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何在 React 中条件性地遍历数组并渲染元素  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  如何破解联通资金短缺导致的基站建设难题?  详解阿里云nginx服务器多站点的配置  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  网易LOFTER官网链接 老福特网页版登录地址  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】