В Fabric, как я могу создать список глобусов из удаленного пути - PullRequest
0 голосов
/ 19 декабря 2018

С Python Fabric Я хочу передавать файлы на удаленный сервер и с него.

Список файлов для передачи, которые мне нужно сгенерировать из выражения типа glob, например * или *.txt (а затем применить некоторые дополнительные исключения).

В случае передачи в на удаленное устройство легко выполнить глобальный список исходных файлов, поскольку источник является локальным:

[ f for f in Path(local_dir).glob(<my glob expression>)]

Но как мне это сделать на удаленном сервере?У меня есть соединение с пультом, установленное через with fabric.Connection(...) as c:, но я не могу найти метод glob в объекте соединения.

1 Ответ

0 голосов
/ 19 декабря 2018

Один из вариантов - использовать метод listdir объекта SFTPClient, возвращаемый c.sftp(), чтобы получить список всех удаленных файлов, а затем применить fnmatch.filter с вашим выражением glob:

fnmatch.filter(c.sftp().listdir(), '*.py')

Результат: В следующем удаленном каталоге

$ ls
1.log  2.txt  3.py  4.csv  5.py

сначала перечисляет весь каталог, затем с помощью glob:

>>> c.sftp().listdir()
['5.py', '3.py', '4.csv', '2.txt', '1.log']
>>> fnmatch.filter(c.sftp().listdir(), '*.py')
['5.py', '3.py']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...