2016-04-11 26 views
0

我一直在使用一個小腳本,使用ftplib從NOAA CLASS檔案下載衛星數據。直到最近,這一直是完美的工作,但現在我沒有看到我的訂單對應的目錄。 ftplib查詢實際上只能看到一小部分可用的目錄。Python 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歸檔訂單。那麼,數據提供者是否可以在服務器上做出一些改變,導致這種奇怪的行爲?

+0

我剛剛使用'ftplib'和CLI測試了主機 - 我從這兩個目錄列表中獲得了相同的目錄列表。我是否認爲在使用「正常ftp會話」時不會匿名登錄?這將解釋看到不同的清單... – jmetz

+0

謝謝。那麼,我不這麼認爲。我在兩種情況下都匿名登錄。在使用CLI時,我使用「ftp」並提供任何內容或我的電子郵件地址,並且我嘗試了ftp.login()和ftp.login('匿名',<我的電子郵件地址>)但沒有更改。所以,我是對的,你們在這兩種情況下只能看到1926個左右的參賽作品嗎? – Adam

回答

0

當我登錄到普通命令行客戶端時,根本沒有看到您的工作目錄。當我ping服務器時,我得到的IP爲204.62.251.180。如果你得到一個不同的服務器,那麼他們的服務器可能會有一些不一致。我會聯繫NOAA CLASS,因爲它似乎是他們的服務器的問題,而不是連接到他們的客戶端。

+0

謝謝。是的,我現在聯繫了NOAA CLASS。事實上,我得到了不同的IP:140.172.19.180 – Adam

+0

發現問題!自從我上次下載以來,它們已經改變了服務器,並且IP地址相差一個字母,我沒有看到。非常遺憾。所以,在ftplib或我的使用中沒有錯!所以,改變我的腳本以使用ftp.class.ngdc.noaa.gov上的主機(我在shell中使用交互式FTP會話時使用)而不是ftp.class.ncdc.noaa.gov(這是我使用的地方從下載)發揮了訣竅。再次抱歉! – Adam

相關問題