python ftp.nlst () возвращает пустой список, когда где (под) каталоги на сервере - PullRequest
0 голосов
/ 29 июня 2018

Моему приложению нужно загрузить все каталоги с удаленного FTP, я впервые тестирую Python ftplib.

Когда я пытаюсь составить список всех каталогов на удаленном FTP с помощью команды ftp.nlst(), возвращается пустой список. Я точно знаю, что каталог не пустой, потому что эта команда: ftp.retrlines('list') вернула объект, отображающий имена подпапок внутри каталога.

Во время тестирования я пробовал другие команды, такие как ftp.cwd('/other-dir/') или ftp.pwd(), но ни одна из них, похоже, не работает.

Это код, который я использую для отображения списка подкаталогов:

from ftplib import FTP

def ftpConnection():
    ftp = FTP('ftp-address')
    ftp.login('user', 'password') 
    lista = ftp.nlst()
    return (lista)

print(ftpConnection())

Выход:

[]

Как видите, список пуст.


Это мой код для retrlines:

def ftpConnection():
    ftp = FTP('remoteFtp')
    ftp.login('user', 'password') 
    ftp.retrlines('LIST')

print (ftpConnection())

Вывод:

drw-rw-rwx 1 clt_kantar_italy clt_kantar_italy          512 Jun 29 09:23 .
drw-rw-rwx 1 clt_kantar_italy clt_kantar_italy          512 Jun 28 05:11 103367
drw-rw-rwx 1 clt_kantar_italy clt_kantar_italy          512 Jun 29 02:01 121901
drw-rw-rwx 1 clt_kantar_italy clt_kantar_italy          512 Sep 23  2016 123233
drw-rw-rwx 1 clt_kantar_italy clt_kantar_italy          512 Jun 29 09:19 125183
drw-rw-rwx 1 clt_kantar_italy clt_kantar_italy          512 Jun 29 02:34 133028

Это вывод из командной строки ftp:

230-Welcome clt_kantar_italy from remoteFtp. You are now logged in to the server.
230 User logged in, proceed.
ftp> dir
200 PORT command successful.
150 File status okay; about to open data connection.
drw-rw-rwx 1 clt_kantar_italy clt_kantar_italy          512 Jun 29 09:23 .
drw-rw-rwx 1 clt_kantar_italy clt_kantar_italy          512 Jun 28 05:11 103367
drw-rw-rwx 1 clt_kantar_italy clt_kantar_italy          512 Jun 29 02:01 121901
drw-rw-rwx 1 clt_kantar_italy clt_kantar_italy          512 Sep 23  2016 123233
drw-rw-rwx 1 clt_kantar_italy clt_kantar_italy          512 Jun 29 09:19 125183
drw-rw-rwx 1 clt_kantar_italy clt_kantar_italy          512 Jun 29 02:34 133028
226 Closing data connection. Transferred 481 bytes.
ftp: 484 bytes received in 0.01secondi 37.23Kbyte/sec)
ftp> ls
200 PORT command successful.
150 File status okay; about to open data connection.
226 Closing data connection. Transferred 0 bytes.

1 Ответ

0 голосов
/ 29 июня 2018

Итак, вы видите это сами с ftp (исходя из поведения, которое я предполагаю, что это Windows ftp.exe).

  • dir, использующая команду LIST FTP, возвращает папки;
  • ls, использующая команду NLST FTP, не возвращает папки.

Так вот как ваш FTP-сервер ведет себя - он не возвращает папки в NLST.

Если вам нужно получить папки с вашего FTP-сервера, вы должны использовать LIST:

...