2016-04-11 10 views
0

ftplibを使用して、NOAA CLASSアーカイブから衛星データをダウンロードするために小さなスクリプトを使用しています。最近まで、これは完璧に動作していましたが、今は私の注文に対応するディレクトリが表示されません。 ftplibクエリは実際に利用できるディレクトリのほんの一部しか見ません。以下はPython ftplibにすべてのファイル/ディレクトリが表示されない

はftplibのが唯一のルートディレクトリにあるコンテンツのサブセットを見ていることを示している数行です:通常のFTPセッションで

1926 
False 

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() 

これは、次の出力を生成します私は、ルートディレクトリの下に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

ありがとう。まあ、私はそうは思わない。どちらの場合も匿名でログインします。私は "ftp"を使用し、CLIを使用するときは何も送っていないメールアドレスを提供していますが、ftp.login()とftp.login( 'anonymous'、)を試しました。ですから、私は1926年の両方のケースでエントリーしか見ることができません。 – Adam

答えて

0

通常のコマンドラインクライアントにログインすると、ジョブディレクトリがまったく表示されません。私がサーバーにpingを実行すると、IPアドレスは204.62.251.180になります。あなたが別のサーバを取得した場合、サーバに矛盾が生じる可能性があります。私はNOAA CLASSに連絡します。なぜなら、サーバに問題があり、クライアントに接続していないように思えるからです。

+0

ありがとうございます。はい、今NOAAクラスに連絡しました。確かに私は別のIPを取得します:140.172.19.180 – Adam

+0

問題が見つかりました!彼らは私の最後のダウンロード以来、サーバーを変更しており、IPアドレスは1文字違いですが、私はそれを見ませんでした。これで申し訳ありません。だから、ftplibや私の使い方に間違いはありません! ftp.class.ngdc.noaa.gov(シェルでインタラクティブFTPセッションを行うときに使用したftp.class.ngdc.noaa.gov)のホストを使用するようにスクリプトを変更すると、ftp.class.ncdc.noaa.gov(これは私が使用した場所ですからダウンロードするために)トリックを作った。またすみません! – Adam

関連する問題