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