使用 Python Paramiko 使用通配符从 SFTP 服务器下载文件

Downloading files using wildcard from SFTP server using Python Paramiko

我有一个工作代码,当我准确地提到文件名它在文件夹中的位置时,它工作得很好。但是这些文件的名称中添加了日期和时间。如何使文件路径相同以供读取?下面是我的代码。

import paramiko
import os

paramiko.util.log_to_file('logfile.log')

host = "ftp.servername.com"
port = 22
transport = paramiko.Transport((host, port))
password = "mypass"
username = "myuser"

transport.connect(username=username, password=password)

sftp = paramiko.SFTPClient.from_transport(transport)

filepath = '/Home/user/Automation_2021-07-14_170139.csv'
localpath = 'file/dkc.csv'
sftp.get(filepath, localpath)

sftp.close()
transport.close()

如何在文件路径中传递 *?我想做成下面这样。

filepath = '/Home/user/Automation_*.csv'
localpath = 'file/dkc.csv'
sftp.get(filepath, localpath)

您不能将通配符直接传递给 Paramiko 的 SFTPClient.get

您必须首先找出确切的名称,然后将其与 get 一起使用。

下面的代码帮助我解决了这个问题。

latest = 0
latestfile = None

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