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本地测试与生产环境动态切换【方法】

