Упорядочить SFTP файлы по дате - PullRequest
1 голос
/ 13 мая 2019

Я подключаюсь к папке sftp со списком файлов. Мне нужно заказать их по дате и извлечь последние два.

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

os.get(filepath, localpath)

Я могу извлечь все файлы с помощью os.get, но я попытался os.listdir, но это не порядок по дате, которая мне нужна. Я посмотрел в библиотеке ОС, но не могу найти что-то, чтобы заказать по дате.

1 Ответ

2 голосов
/ 13 мая 2019

В дополнение к 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)]
...