我正在连接到带有文件列表的sftp文件夹。我需要按日期排序并提取最新的两个。
filepath= "/test/sftp/files/"
localpath= "C:/myfiles/"
os.get(filepath, localpath)
我可以使用os.get提取所有文件,但是我尝试了os.listdir,但这并不能按我需要的日期排序。我查看了os库,但找不到按日期排序的东西。
答案 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));