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