Чтобы вытащить из удаленного каталога все файлы, сначала нужно получить список их имен. Объект класса FTP обладает методом nlst, который является удаленным эквивалентом функции os.listdir: nlst возвращает список строк — имен всех файлов в текущем удаленном каталоге. Получив такой список, мы просто обходим его в цикле и выполняем FTP-команды получения файлов поочередно для каждого имени файла (подробнее об этом чуть ниже).
Метод nlst в некоторой мере похож на запрос списка содержимого каталога командой ls в обычных интерактивных программах FTP, но Python автоматически преобразует текст листинга в список имен файлов. Методу можно передать имя удаленного каталога, содержимое которого нужно получить. По умолчанию он возвращает список файлов для текущего каталога сервера. Родственный метод класса FTP, dir, возвращает список строк, порожденных командой FTP LIST. Результат ее похож на ввод команды dir в сеансе FTP, а строки результата, в отличие от nlst, содержат полные сведения о файлах. Если потребуется получить более подробную информацию обо всех удаленных файлах, следует вызвать метод dir и проанализировать его результаты (как это делается, будет показано в одном из последующих примеров).
Обратите внимание, что здесь выполняется пропуск «.» и «..» — текущего и родительского каталогов, если они присутствуют в списке элементов удаленного каталога. В отличие от os.listdir, некоторые (но не все) серверы включают эти элементы в список, поэтому нам необходимо либо пропускать их, либо обрабатывать исключения, к которым они могут привести (подробнее об этом будет рассказываться ниже, когда мы начнем использовать dir).
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011