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



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

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一起使用。

请参阅使用Paramiko 在Python中列出SFTP服务器上匹配通配符的文件

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

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

最新更新