按日期订购 SFTP 文件

问题描述 投票:0回答:2

我正在连接到一个包含文件列表的 SFTP 文件夹。我需要按日期订购这些并提取最新的两个。

filepath= "/test/sftp/files/"
localpath= "C:/myfiles/"

os.get(filepath, localpath)

我可以使用

os.get
提取所有文件,但我尝试了
os.listdir
但这没有按我需要的日期排序。我查看了
os
图书馆,但找不到按日期订购的东西。

我在用Paramiko。

python sftp paramiko
2个回答
6
投票

除了仅给出远程文件名称的

listdir
之外,paramiko还提供了一个
listdir_attr
方法,该方法返回包含文件名的
SFTPAttributes
列表以及一个
st_mtime
字段(以及其他)。您只需在该
st_mtime
字段上对该列表进行排序,以获取按其(修改)日期排序的文件列表:

client = paramiko.client.SSHClient()
client.connect(...)                       # use your connection parameters here
sftp = client.open_sftp()
remote_files = [x.filename for x in sorted(sftp.listdir_attr(), key = lambda f: f.st_mtime)]

-2
投票
class MyClass1
      {
          public string DataTime { get; set; }
          public string DataTimeUTC { get; set; }
          public string Path { get; set; }  
    }
  
  SftpClient client = new SftpClient(con);
                  client.Connect();
                  var files = client.ListDirectory("");

    foreach (var file in files)
                 {
  newData.AddRange(new List<MyClass1>() {
  new MyClass1() { Path =  file.Name, DataTime = $"{file.LastWriteTime}", DataTimeUTC =  $"{file.LastWriteTimeUtc.Ticks}" } });
  }

  newData.Sort((a, b) => a.DataTimeUTC.CompareTo(b.DataTimeUTC));
© www.soinside.com 2019 - 2024. All rights reserved.