Получение списка каталогов и файлов с помощью Python
Друзья, хотим поделиться с вами опытом решения одной из задач, поставленной перед нами. Нам требовалось подтвердить или опровергнуть предположение о нарушении технологии обработки данных в автоматизированной системе, а именно: проверить содержимое каталогов, размещенных на FTP-сервере, на наличие в них определенных файлов.
Для решения данной задачи мы использовали Python и его стандартный модуль ftplib.
Опишем, как мы это сделали. Для того, чтобы у вас была возможность попробовать самостоятельно проверить работу кода, мы опишем процесс на примере FTP-сервера Ростовского госуниверситета (ftp.rsu.ru).
Итак, начнем. Импортируем необходимые модули:
Для входа на FTP-сервер потребуется указать учетные данные (имя пользователя и пароль), а в случае возможности входить анонимно (это наш случай в приводимом для примера FTP-сервере) используем следующие строки:
Далее используем вспомогательные функции, которые позволят вывести список «найденных» каталогов и файлов:
Затем подключаемся к серверу, используя класс клиента FTP:
Для исключения проблем при работе с нелатинскими символами, изменим кодировку на UTF-8:
Теперь, когда мы получили доступ к серверу, выведем приветственное сообщение, которое отправляется сервером после подключения (для уверенности, что мы оказались там, где надо 🙂
Вот оно!
220 ProFTPD 1.3.5b Server (FTP Server of Rostov State University — only anonymous logins are allowed) [195.208.245.253]
После подключения к серверу мы находимся в корневом каталоге. Посмотрим на его содержимое, используя команду MLSD, с помощью которой получаем список каталогов и файлов с их метаданными: разрешение, размер, дата последней модификации и т. д.
Вот результат работы команды MLSD:
Далее, если потребуется сменить текущий каталог на какой-либо другой, например pub/maps, чтобы проверить его содержимое, используем команду cwd:
Если все ОК, получим сообщение:
‘250 CWD command successful’
Теперь можно повторить выполнение MLSD и вот содержимое ее работы
После окончания работы с FTP-сервером закрываем соединение:
В результате: '221 Goodbye.'
Вот так, используя этот код, мы получили возможность судить о наполнении каталогов информацией, чтобы затем сделать выводы о том, выполняются или нет требования нормативных документов компании в части полноты сохраняемых данных в виде файлов, их корректности наименования и размещения в определенных каталогах FTP-сервера.