python之使用SFTP将Windows文件上传到Linux

news/2024/12/18 1:03:43/

环境

Python-3.8
Windows 64位

安装必要的库

首先,确保已经安装了以下库:

#有网安装方式:
pip install paramiko
#离线安装方式:
pip install bcrypt-3.1.7-cp38-cp38-win_amd64.whl
pip install cryptography-2.9-cp38-cp38-win_amd64.whl
pip install PyNaCl-1.3.0-cp38-cp38-win_amd64.whl
pip install paramiko-2.9.5-py2.py3-none-any.whl

代码实现

python">import os  # 引入os模块
import paramiko  # 引入paramiko代码
from stat import S_ISDIR
import base64  # 引入base64模块# base64加密
def b64_encode(password):password = password.encode("utf-8")return base64.b64encode(password)# base64 解密
def b64_decode(password):return base64.b64decode(password)def isdir(sftp, dirPath):try:return S_ISDIR(sftp.stat(dirPath).st_mode)except IOError:return Falsedef rm(sftp, path):files = sftp.listdir(path)for f in files:filepath = path + '/' + fprint("删除已存在文件: " + filepath)if isdir(sftp,filepath):rm(filepath)else:sftp.remove(filepath)sftp.rmdir(path)path = 'D:/Temp/en/20221114'  # 赋值路径
pathDate = path.split("/")[-1]
sftpPath = os.path.join('/home/app_adm/tmp/sftp/', pathDate)
print(sftpPath)
mylist = os.listdir(path)  # 赋值列表(列表的索引从0开始)pw=b64_decode('**********')
transport = paramiko.Transport(('********', 22))  # 打开通道
transport.connect(username='infra_adm', password=pw)  # 开始连接
sftp = paramiko.SFTPClient.from_transport(transport)  # 打开sftp客户端try:print("开始创建目录:" + sftpPath)sftp.stat(sftpPath)rm(sftp, sftpPath)sftp.mkdir(sftpPath, mode=0o775)
except FileNotFoundError:# 目录不存在,创建目录sftp.mkdir(sftpPath, mode=0o775)count = 0  # 用来计数
while count < len(mylist):  # 如果列表里有多个值 则一一循环print("正在传输:" + mylist[count])  # 循环开始时打印正在传输的文件名fullPath = path + '/' + mylist[count]sftpFullPath = sftpPath + '/' + mylist[count]# print(fullPath)# print(sftpFullPath)sftp.put(fullPath, sftpFullPath)print(mylist[count] + '传输完成')  # 传输完成后打印传输完成的文件名count = count + 1  # 每次上传完一个文件计数+1
transport.close()  # 当传输结束之后关闭通道

http://www.ppmy.cn/news/1555997.html

相关文章

React中组件通信的几种方式

在构建复杂的React应用时&#xff0c;组件之间的通信是至关重要的。从简单的父子组件通信到跨组件状态同步&#xff0c;不同组件之间的通信方式多种多样。 1. 父子组件通信 父子组件通信是 React 中最基本的通信方式之一。在这种模式下&#xff0c;数据是从父组件通过 props …

关于stm32的STOP模式

1.停止模式唤醒后从哪里执行&#xff1f; 停止模式特性&#xff1a; MCU 在进入停止模式时&#xff0c;会保存当前的上下文&#xff08;包括程序计数器和寄存器状态&#xff09;。当有有效的唤醒事件时&#xff0c;MCU 会退出停止模式&#xff0c;并从进入模式时暂停的指令处继…

C#—泛型约束

C#—泛型约束 概念&#xff1a; 泛型约束就是告知编译器类型参数必须具备的功能。 在没有任何约束的情况下&#xff0c;类型参数可以是任何类型。 编译器只能假定 System.Object 的成员&#xff0c;它是任何 .NET 类型的最终基类。当分配给泛型的类型参数不满足约束的类型时&…

RabbitMQ中的Work Queues模式

在现代分布式系统中&#xff0c;消息队列&#xff08;Message Queue&#xff09;是实现异步通信和解耦系统的关键组件之一。RabbitMQ 是一个广泛使用的开源消息代理软件&#xff0c;支持多种消息传递模式。其中&#xff0c;Work Queues&#xff08;工作队列&#xff09;模式是一…

nginx问题总结

问题记录&#xff1a; 默认网络下部署nginx&#xff0c;挂载nginx.conf文件&#xff0c;提示&#xff1a;nginx: [emerg] host not found in upstream "shop" in /etc/nginx/nginx.conf:29。nginx配置内容&#xff1a; location /api {rewrite /api/(.*) /$1 break;…

Web身份认证 --- Session和JWT Token

Web 身份认证 --- Session和JWT Token 方法一: 通过使用Session进行身份认证方法二: 通过JWT token进行身份认证什么是JWTJWT完整流程JWT攻防JWT 如何退出登录JWT的续签 方法一: 通过使用Session进行身份认证 用户第一次请求服务器的时候&#xff0c;服务器根据用户提交的相关信…

自动化高架仓库中托盘状态精准监控的解决方案

在自动化高架仓库的高效运作背后&#xff0c;隐藏着一些亟待解决的技术难题。其中&#xff0c;货架的稳定性及托盘的精确定位问题&#xff0c;对整个仓库的作业效率和安全性有着至关重要的影响。 自动化高架仓库中的货架大多由钢结构或钢框架构成&#xff0c;初看之下&#xf…

Android之RecyclerView显示数据列表和网格

一、RecyclerView的优势 RecyclerView 的最大优势在于&#xff0c;它对大型列表来说非常高效&#xff1a; 默认情况下&#xff0c;RecyclerView 仅会处理或绘制当前显示在屏幕上的项。例如&#xff0c;如果您的列表包含一千个元素&#xff0c;但只有 10 个元素可见&#xff0…