Во-первых, если вы выполняете автоматизированные задачи для полученного списка FTP, то вам, вероятно, следует смотреть NLST
, а не LIST
, как указано в RFC 959, раздел 4.1.3 :
NAME LIST (NLST)
...
This command is intended to return information that
can be used by a program to further process the
files automatically.
Витая документация для LIST
гласит:
It can cope with most common file listing formats.
Это делает меня подозрительным; Я не люблю решения, которые "справляются". LIST
предназначался для потребления человеком, а не для машинной обработки.
Если ваш целевой сервер поддерживает их, вам следует предпочесть MLST
и MLSD
, как определено в RFC 3659, раздел 7 :
7. Listings for Machine Processing (MLST and MLSD)
The MLST and MLSD commands are intended to standardize the file and
directory information returned by the server-FTP process. These
commands differ from the LIST command in that the format of the
replies is strictly defined although extensible.
Однако эти новые команды могут быть недоступны на вашем целевом сервере, и я не вижу их в Twisted. Поэтому NLST
, вероятно, является вашей лучшей ставкой.
Что касается вашей проблемы, есть три вероятных причины:
- Неправильная обработка возвращаемых результатов (возможно, ошибка Twisted, как вы предлагаете, или, возможно, в другом месте)
- Сервер глючит и не отправляет правильный (полный) ответ
- Отправляется неправильная команда (маловероятно для прямой
NLST
/ LIST
, но некоторые серверы реагируют по-разному, если для этих команд предоставляются аргументы)
Вы можете исключить (2) и (3) и доказать, что причина (1), посмотрев, что отправлено по проводам. Если эта опция недоступна вам как часть Twisted API или конфигурации ведения журнала сервера Pure-FTPD, то вам может потребоваться отключить сетевой анализатор, такой как tcpdump, snoop или WireShark (при условии, что вам разрешено делать это в ваша среда). Обратите внимание, что вам нужно будет отслеживать не только управляющее соединение (порт 21), но и соединение для передачи данных (так как оно содержит результаты команды LIST
/ NLST
). WireShark хорош, поскольку он выполнит анализ на уровне протокола для вас.
Удачи.