如何使用 Paramiko 从 SFTP 服务器仅下载最新文件?

2024-02-14

我想编写连接到我的大学 SFTP 服务器并下载最新文件和练习的脚本。到目前为止,我已经对 Paramiko 示例中的代码进行了一些更改,但我不知道如何下载最新的文件。

这是我的代码:

import functools
import paramiko 

class AllowAnythingPolicy(paramiko.MissingHostKeyPolicy):
    def missing_host_key(self, client, hostname, key):
        return

adress = 'adress'
username = 'username'
password = 'password'

client = paramiko.SSHClient()
client.set_missing_host_key_policy(AllowAnythingPolicy())
client.connect(adress, username= username, password=password)

def my_callback(filename, bytes_so_far, bytes_total):
    print ('Transfer of %r is in progress' % filename) 

sftp = client.open_sftp()
sftp.chdir('/directory/to/file')
for filename in sorted(sftp.listdir()):
    if filename.startswith('Temat'):
        callback_for_filename = functools.partial(my_callback, filename)
        sftp.get(filename, filename, callback=callback_for_filename)

client.close() 

Use the SFTPClient.listdir_attr https://docs.paramiko.org/en/latest/api/sftp.html#paramiko.sftp_client.SFTPClient.listdir_attr而不是SFTPClient.listdir获取带有属性的列表(包括文件时间戳)。

然后,找到最大的文件条目.st_mtime属性 https://docs.paramiko.org/en/latest/api/sftp.html#paramiko.sftp_attr.SFTPAttributes.

代码如下:

latest = 0
latestfile = None

for fileattr in sftp.listdir_attr():
    if fileattr.filename.startswith('Temat') and fileattr.st_mtime > latest:
        latest = fileattr.st_mtime
        latestfile = fileattr.filename

if latestfile is not None:
    sftp.get(latestfile, latestfile)

有关更复杂的示例,请参见如何在 Linux 中获取包含感兴趣的特定文件的最新文件夹并在 Python 中使用 Paramiko 下载该文件? https://stackoverflow.com/q/60218092/850848

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Paramiko 从 SFTP 服务器仅下载最新文件? 的相关文章

随机推荐

  • 如何在java中更快地计算sha256?

    我发现在java中计算sha256很慢 例如 它比python慢 我编写了两个简单的基准测试来计算 1GB 零的 sha256 在这两种情况下 结果是相同且正确的 但 python 时间为 5653ms java 时间为 8623ms 慢了
  • 在 SQL Server 中删除具有默认约束的列(IF EXISTS)

    我正在编写一个用于删除列和默认约束的 SQL 脚本 以下脚本工作正常 但我想知道这是否是正确的方法 我可以在一个语句中删除带有列的默认约束 而不是使用两个单独的约束吗 IF EXISTS SELECT FROM dbo sysobjects
  • 将 NSUserDefaults 转换为钥匙串?

    所以 NSUserDefaults 非常容易使用 但显然 它不太安全 没有加密 当然 客户希望应用程序首选项是安全的 因为它包含敏感数据 但钥匙串是安全的 尽管很难编码 显然 那么有没有一种方法可以轻松地将 NSUserDefaults 代
  • tslint 更新错误“找不到模块 'tslint/lib/lint'”

    我们最近将 Angular 2 项目升级为 angular cli1 0版本 我们还升级了tslint from 2 x to 5 x 现在我们收到以下信息tslint设计时出错 在 VSCode 输出终端中 验证时找不到模块 tslint
  • 无法将 django 模型导入到 celery 任务中

    我有以下任务 from future import absolute import from myproject celery import app from myapp models import Entity app task def
  • vue 3打字稿未捕获(承诺中)TypeError:this.$on不是一个函数

    我安装了一个新的 Vue 3 其中包含 vue cli 和 typescript 一切都在运行 但是当我添加一个https vue select org https vue select org 包裹 我在浏览器控制台上收到此错误 Unca
  • 如何在 Node.js 中等待异步请求循环完成?

    我想在 node js 中发出多个请求来获取几个外部 API 响应 并将它们合并到一个数组中 我正在使用 for 循环来实现此目的 这是我的代码 res setHeader Content Type application json con
  • 如何在 Angular 2 中打印 PDF

    我有 pdf 文件的 URL exa url 是 test example com incoice 1 download auth token some token 当我访问此 url 时 该 url 将在浏览器中显示 PDF 现在我想用打
  • 如何使用 Bresenham 创建任意粗细的线?

    我目前正在使用 Bresenham 的算法来绘制线条 但它们的厚度 当然 是一个像素 我的问题是绘制任意粗细的线条最有效的方法是什么 我使用的语言是C 再取一个 Bresenham 循环 并用它来修改原始线在矩形方向上的起始和结束位置 问题
  • 如何提高 Java 中收据打印机和 ESC/POS 命令的速度

    我有一个用 Java 与热敏打印机通信的应用程序 使热敏打印机使用 Star tsp 100 打印机打印带有条形码 强调 不同尺寸等的收据 我可以让程序打印出我喜欢的内容 但是打印机速度很慢 我相信原因是我使用了非首选的方式 方法发送字节命
  • 在 ASP.Net MVC 中管理 MongoDB 连接的正确方法是什么?

    管理 MongoServer 类生命周期的最佳实践是什么 我应该创建一个并在每个请求结束时关闭它 还是应该使用 StructureMap 之类的东西在应用程序的整个生命周期中将其保留为单例 任何帮助都是值得赞赏的 In 官方文档 http
  • 如何对行组上的 SSRS 矩阵列求和

    我有一份报告 显示一个人为他们分配到的每个项目工作的总小时数 按月汇总 我想在 SSRS 2008 R2 中计算每个人每个月的总小时数 因此 例如 我有以下数据 并希望像这样列出总计 January February March Worke
  • 为什么在预提交挂钩中执行 git add 后索引没有更新?

    我有一个预提交钩子 检查我的版本文件是否需要更新 修改所述文件 对此文件执行 git add 这允许我将更新的版本文件添加到同一提交中 我遇到的唯一问题是 在钩子运行后 工作树和 HEAD 会使用新版本文件进行更新 但索引不会 我需要手动暂
  • Firebase 推送通知在某些设备上无法正常工作

    对于推送通知 我使用 FCM 我在 VIVO V3 手机中遇到一些问题 相同的代码适用于其他设备 黑莓 华为 三星 适用于以下所有场景我已经测试了 3 个场景 当应用程序位于前台时 当应用程序处于后台时 当应用程序完全杀死时 前 2 个条件
  • ConsoleAppender 实例化不起作用:具有私有访问权限

    我的 ConsoleAppender 类实例化不起作用 import org apache logging log4j core appender ConsoleAppender public class Application priva
  • 如何在 PHP 中将 PDF 版本 1.5 转换为版本 1.4

    如何在 PHP 中将 PDF 版本 1 5 转换为版本 1 4 有人能指出我正确的方向吗 我有类似的需求 发现Ghostscript可以修改PDF版本 文档在这里 http ghostscript com doc current Use h
  • 如何使用setCamera(MediaRecorder)?

    根据Android SDK MediaRecorder setCamera可以用于回收现有的相机实例进行视频捕获和预览 而无需重置预览 我无法找到任何示例 并且我所有的尝试都是徒劳的 我要么得到错误的状态异常 要么 MediaRecorde
  • 从 ASP.NET 应用程序写入 IIS 日志

    我想让我的 ASP NET 应用程序将行写入日志中的某个位置 IIS 是否提供任何内置方式来记录 ASP NET 日志消息 我在想可能有一种方法可以捕获对 System Diagnostics Debug WriteLine 的调用 但我找
  • SQLite 外部查询返回内部查询中找不到的结果

    我只是想知道是否有人遇到过 SQLite 3 7 4 中的情况 其中查询将返回一组结果 而当它成为子查询时 结果完全不同 我在更复杂的查询中发现了问题 但这里有一个更简单的示例 演示了相同的行为 数据库设置 CREATE TABLE tes
  • 如何使用 Paramiko 从 SFTP 服务器仅下载最新文件?

    我想编写连接到我的大学 SFTP 服务器并下载最新文件和练习的脚本 到目前为止 我已经对 Paramiko 示例中的代码进行了一些更改 但我不知道如何下载最新的文件 这是我的代码 import functools import parami