python3使用paramiko下载sftp文件
脚本内容如下:
点击查看代码
# coding: utf-8
import os, re, sys, stat
import paramiko
import autoApiDeamo
def sftp_download(sftp, localDir, remoteDir):
# if remoteDir.find(".") == -1:#判断远程目录参数是否是目录,前提是远程的文件名中都包含扩展名,否则此方法不可用,比较靠谱的方法用下面这个
print('--------')
try:
sftp.stat(remoteDir) # 判断远程目录或文件是否存在
except FileNotFoundError as e:
print(e)
sys.exit()
if stat.S_ISDIR(sftp.stat(remoteDir).st_mode): # 如果sftp服务端的remoterDir是目录,则返回True
for file in sftp.listdir(remoteDir):
remoteDirTmp = os.path.join(remoteDir, file)
localDirTmp = os.path.join(localDir, file)
sftp_download(sftp, localDirTmp, remoteDirTmp)
else:
# localPath = localDir.rpartition("/")[0]
# if not os.path.exists(localPath): # 如果本地目录不存在,则创建
# os.mkdir(localPath) # 可创建多级目录
try:
print('==sftp文件为:{0}'.format(remoteDir))
print('==下载文件到本地:{0}'.format(localDir))
sftp.get(remoteDir, localDir)
except Exception as e:
print('download exception:', e)
def get_xlsFile(filename):
'''
从固定的sftp服务器上下载文件到当前目录
:paras filename: 下载的文件
:return: None
'''
# sftp信息
host = '10.xx.xx.68'
port = 5555
username = 'root'
password = 'root@123432432'
sftp_dwglpt_path = '/sftpdir'
# 本地文件或目录
localDir = os.path.join(os.getcwd(), filename)
# 远程文件或目录
remoteDir = sftp_dwglpt_path + '/' + filename
sf = paramiko.Transport((host, port))
sf.connect(username=username, password=password)
sftp = paramiko.SFTPClient.from_transport(sf)
sftp_download(sftp, localDir, remoteDir)
sf.close()
def update_context(filename, excelfile):
'''
将本地excel文件内容更新到在线表格
:param filename: 本地excel文件
:param excelfile: 在线表格excel文件
:return: true/False
'''
autoApiDeamo.dealwith_data(excelfile, '时间', sheetNum=0)
if __name__ == '__main__':
filename = '2023-06-15-08-51001.xls'
get_xlsFile(filename)
# update_context(filename, excelfile)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统