按日期订购SFTP文件

时间:2019-05-13 09:34:28

标签: python sftp

我正在连接到带有文件列表的sftp文件夹。我需要按日期排序并提取最新的两个。

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

os.get(filepath, localpath)

我可以使用os.get提取所有文件,但是我尝试了os.listdir,但这并不能按我需要的日期排序。我查看了os库,但找不到按日期排序的东西。

2 个答案:

答案 0 :(得分:2)

除了end(仅提供远程文件的名称)之外,paramiko还提供了range方法,该方法返回包含文件名的// first start and end let [start, end] = this.getChartRange(); console.log('s: ', new Date(start), ' e: ', new Date(end)) s: Sat Mar 09 2019 10:35:42 GMT+0300 (GMT+03:00) e: Mon Mar 11 2019 20:23:02 GMT+0300 (GMT+03:00) // set start and end console.log('s: ', new Date(start), ' e: ', new Date(end)) s: Sat Mar 09 2019 16:22:26 GMT+0300 (GMT+03:00) e: Tue Mar 12 2019 02:09:46 GMT+0300 (GMT+03:00) this.setChartRange(start, end); // Date is setted properly, you can see it here new Date(this.getChartRange()[1]) Tue Mar 12 2019 02:09:46 GMT+0300 (GMT+03:00) // call draw method this.controlWrapper.draw(); // Date is CHANGED by itself. Now it is SMALLER ! new Date(this.getChartRange()[1]) Mon Mar 11 2019 20:23:02 GMT+0300 (GMT+03:00) 列表和一个{{1} }字段(以及其他字段)。您只需在listdir字段上对该列表进行排序,即可获得按其(修改)日期排序的文件列表:

listdir_attr

答案 1 :(得分:-1)

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));