【问题标题】:Python ftplib does not see all files / directoriesPython ftplib 看不到所有文件/目录
【发布时间】:2016-04-11 09:26:35
【问题描述】:

我一直在使用一个小脚本,使用 ftplib 从 NOAA CLASS 存档下载卫星数据。直到最近,这一直完美无缺,但现在我看不到与我的订单对应的目录。 ftplib 查询实际上只看到一小部分可用目录。

以下几行说明 ftplib 只能看到根目录中的一部分内容:

from ftplib import FTP
HOST = "ftp.class.ncdc.noaa.gov"
ftp = FTP(HOST)
ftp.login()
files = ftp.nlst()
print len(files)
is_ok = '2304318203' in files
print is_ok
ftp.quit()

它产生以下输出:

1926
False

在正常的 ftp 会话中,我在根目录下看到 7203 个项目,尤其是我的目录下的有序数据:

Name (ftp.class.ngdc.noaa.gov:a000680): ftp
331 Any password will work
Password:
230 Any password will work
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd 2304318203
250 OK. Current directory is /2304318203
ftp> pwd
257 "/2304318203" is your current location

我使用的是 Python 2.7,但正如我上面所说,这在以前一直有效,具有类似的 NOAA CLASS 存档命令。那么,可能是数据提供者在他们的服务器上进行了一些更改导致了这种奇怪的行为?

【问题讨论】:

  • 我刚刚使用ftplib 和 CLI 测试了主机 - 我从两者获得了相同的目录列表。当您使用“正常的 ftp 会话”时,我认为您不会匿名登录是否正确?这可以解释看到不同的列表......
  • 谢谢。嗯,我不这么认为。在这两种情况下,我都匿名登录。我使用“ftp”并且在使用 CLI 时不提供任何内容或提供我的电子邮件地址,并且我尝试了 ftp.login() 和 ftp.login('anonymous', ) 但没有任何变化。那么,我说得对吗?在这两种情况下,您只看到 1926 条左右的条目?

标签: python ftplib


【解决方案1】:

当我登录到普通命令行客户端时,我根本看不到您的作业目录。当我 ping 服务器时,我得到一个 IP 为204.62.251.180。如果你得到一个不同的,那么他们的服务器可能会有一些不一致。我会就此联系 NOAA CLASS,因为这似乎是他们的服务器而不是连接到他们的客户端的问题。

【讨论】:

  • 谢谢。是的,我现在已经联系了 NOAA CLASS。事实上,我得到了一个不同的 IP:140.172.19.180
  • 发现问题!自从我上次下载以来,他们已经更改了服务器,并且 IP 地址相差一个字母,我没有看到。非常遗憾。所以,ftplib 或我对它的使用没有任何问题!因此,将我的脚本更改为使用 ftp.class.ngdc.noaa.gov 的主机(我在 shell 中进行交互式 FTP 会话时使用)而不是 ftp.class.ncdc.noaa.gov(我使用的地方下载)成功了。再次抱歉!
猜你喜欢
  • 1970-01-01
  • 2020-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多