当服务器上的(子)目录在哪里时,Python ftp.nlst() 返回空列表

Gar*_*tua 5 python ftp ftplib python-3.x

我的应用程序需要从远程 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())
Run Code Online (Sandbox Code Playgroud)

输出:

[]
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,该列表是空的。


这是我的代码retrlines

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

print (ftpConnection())
Run Code Online (Sandbox Code Playgroud)

输出:

from ftplib import FTP

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

print(ftpConnection())
Run Code Online (Sandbox Code Playgroud)

这是命令行的输出ftp

[]
Run Code Online (Sandbox Code Playgroud)
def ftpConnection():
    ftp = FTP('remoteFtp')
    ftp.login('user', 'password') 
    ftp.retrlines('LIST')

print (ftpConnection())
Run Code Online (Sandbox Code Playgroud)
drw-rw-rwx 1          512 Jun 29 09:23 .
drw-rw-rwx 1          512 Jun 28 05:11 103367
drw-rw-rwx 1          512 Jun 29 02:01 121901
drw-rw-rwx 1          512 Sep 23  2016 123233
drw-rw-rwx 1          512 Jun 29 09:19 125183
drw-rw-rwx 1          512 Jun 29 02:34 133028
Run Code Online (Sandbox Code Playgroud)

Mar*_*ryl 1

所以你自己看到它ftp(从我假设它是 Windows 的行为来看ftp.exe)。

\n\n
    \n
  • dir命令,使用LISTFTP 命令,返回文件夹;
  • \n
  • ls命令(使用NLSTFTP 命令)不会返回文件夹。
  • \n
\n\n
\n\n

这就是您的FTP 服务器的行为方式 \xe2\x80\x93 它不会返回NLST.

\n\n

如果您需要从 FTP服务器检索文件夹,则必须使用LIST

\n\n\n